我最近开始为本机c ++库编写C ++ / CLI包装器。我现在收到这个编译警告
“警告LNK4249:指令'/ CLRTHREADATTRIBUTE:STA'与命令行冲突;忽略”
我的c ++ / cli包装器是在链接器的命令行参数中为MTA设置的,但我不知道正在尝试给STA指令的文件或项目。
我做了足够的阅读以担心.NET强制库变成多线程。我已经读到这主要影响我的应用程序使用COM,但我不确定我的DLL是否使用COM或在哪里使用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>
是否有人有任何建议可以帮助我避免将来的痛苦经历,或者我应该不担心它?
答案 0 :(得分:0)
到目前为止一切顺利。我没有看到任何真正的问题;我认为这只是因为MFC是一个单线程库,所以它想要这样编译。所以,对于我的情况,我认为只要我对待所有MFC对象,例如不是线程安全的,我就没事。