1

我最近开始为原生 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>

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

4

1 回答 1

0

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

于 2011-09-28T15:37:04.353 回答