【问题标题】:STA, MTA conflict warning Important?STA、MTA 冲突警告 重要吗?
【发布时间】:2011-01-27 01:11:47
【问题描述】:

我最近开始为原生 c++ 库编写 C++/CLI 包装器。我现在收到这个编译警告

“警告 LNK4249:指令 '/CLRTHREADATTRIBUTE:STA' 与命令行冲突;忽略”

我的 c++/cli 包装器是在链接器的命令行参数中为 MTA 设置的,但我不知道哪个文件或项目试图提供 STA 指令。

我做了足够多的阅读来担心 .NET 会强制库变为多线程。我读到这主要影响我的应用程序对 COM 的使用,但我不确定我的 DLL 是否或在哪里使用 COM。我使用互操作服务来编组字符串数据,并使用“msclr\auto_gcroot.h”来指向非托管类中的托管类。在被包装的原生 c++ 库中,我包含以下标头:

#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxmt.h>
#include "Winsock2.h."
#include <time.h>

有没有人有任何建议可以帮助我避免将来的痛苦经历,或者我应该不用担心?

【问题讨论】:

    标签: c++-cli wrapper managed sta mta


    【解决方案1】:

    到目前为止一切顺利。我没有看到任何真正的问题。我认为这只是因为 MFC 是一个单线程库,所以它想以这种方式编译。所以,就我而言,我认为只要我处理所有 MFC 对象,比如不是线程安全的,我就可以了。

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      相关资源
      最近更新 更多