我正在使用 VS2008 在现有的 C++ COM DLL 上进行开发。
编译器说:
“定义了不止一个全局线程模型”
在我的 StdAfx.h 中我得到了这个定义:
#define _ATL_APARTMENT_THREADED
我用这个初始化 COM:
CoInitialize(NULL);
但我找不到 _ATL_FREE_THREADED 的定义。编译器警告表明两者都必须在某处定义。但我不知道在哪里可以找到 _ATL_FREE_THREADED。
我为什么会收到编译器消息有什么想法吗?
谢谢于尔根
最佳答案
这些符号在 atlbase.h
和 atldef.h
中定义,它们与其他 ATL header 一起存在 - 您可以查看那里,发现有一些简单的检测逻辑是否已经设置了其中一个符号并设置了默认符号。
关于c++ - _ATL_APARTMENT_THREADED 和 _ATL_FREE_THREADED 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245685/