c++ - _ATL_APARTMENT_THREADED 和 _ATL_FREE_THREADED 冲突

标签 c++ com thread-safety

我正在使用 VS2008 在现有的 C++ COM DLL 上进行开发。

编译器说:
“定义了不止一个全局线程模型”

在我的 StdAfx.h 中我得到了这个定义:
#define _ATL_APARTMENT_THREADED

我用这个初始化 COM:
CoInitialize(NULL);

但我找不到 _ATL_FREE_THREADED 的定义。编译器警告表明两者都必须在某处定义。但我不知道在哪里可以找到 _ATL_FREE_THREADED。

我为什么会收到编译器消息有什么想法吗?

谢谢于尔根

最佳答案

这些符号在 atlbase.hatldef.h 中定义,它们与其他 ATL header 一起存在 - 您可以查看那里,发现有一些简单的检测逻辑是否已经设置了其中一个符号并设置了默认符号。

关于c++ - _ATL_APARTMENT_THREADED 和 _ATL_FREE_THREADED 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245685/

相关文章:

c++ - 为什么标准不提供通过内容检查来哈希C字符串的特化

c++ - 使用逗号分隔值的矩阵初始化

windows - 当一个类由于某种设计原因没有实现方法时返回哪个 HRESULT?

com - std::unique_ptr和指针到指针

winapi - 在 Windows 7 上加载视频处理器 MFT 时出现 "Class not registered"

c++ - Linux 编程中的线程安全变量

c++ - std::list 中最后一个元素的迭代器

c# - 下面类线程安全吗?解释

multithreading - 线程同步原语

c++ - C 风格字符串到 std::string 的转换说明