_ATL_公寓线程化和ATL_自由线程化冲突 我在VC2008上开发了一个现有的C++ COM DLL。
编译器说:_ATL_公寓线程化和ATL_自由线程化冲突 我在VC2008上开发了一个现有的C++ COM DLL。,c++,com,thread-safety,C++,Com,Thread Safety,编译器说: “定义了多个全局线程模型” 在我的StdAfx.h中,我得到了以下定义: #定义_ATL_plant_线程化 我使用以下命令初始化COM: CoInitialize(空) 但我找不到一个定义为ATL免费线程。编译器警告指示必须在某个位置定义这两个选项。但是我不知道在哪里可以找到ATL FREE线程 你知道我为什么得到编译器消息吗 感谢juergen这些符号是在atlbase.h和atldef.h中定义的,它们与其他ATL头一起驻留-您可以在那里查看,并看到有一些简单的逻辑用于检测这些
“定义了多个全局线程模型” 在我的StdAfx.h中,我得到了以下定义:
#定义_ATL_plant_线程化
我使用以下命令初始化COM:CoInitialize(空)代码>
但我找不到一个定义为ATL免费线程。编译器警告指示必须在某个位置定义这两个选项。但是我不知道在哪里可以找到ATL FREE线程
你知道我为什么得到编译器消息吗
感谢juergen这些符号是在atlbase.h
和atldef.h
中定义的,它们与其他ATL头一起驻留-您可以在那里查看,并看到有一些简单的逻辑用于检测这些符号中的一个是否已经设置并设置默认符号。这些符号是在内部定义的atlbase.h
和atldef.h
与其他ATL头一起驻留-您可以在那里看到一些简单的逻辑,用于检测这些符号中的一个是否已经设置好并设置默认符号。听起来好像您在某个地方编写了定义“ATL自由”的代码。你可以洒
#ifdef _ATL_FREE_THREADED
#pragma message ("hi")
#endif
#ifdef_ATL_FREE_螺纹
#布拉格语信息(“hi”)
#恩迪夫
。。。在不同的include文件之间,查看是否可以找到定义该宏的文件。但是,在执行此操作之前,是否已检查以确保它未在项目属性中定义(在项目和cpp文件级别)?听起来确实像是在某个地方编写了定义“ATL自由”的代码。你可以洒
#ifdef _ATL_FREE_THREADED
#pragma message ("hi")
#endif
#ifdef_ATL_FREE_螺纹
#布拉格语信息(“hi”)
#恩迪夫
。。。在不同的include文件之间,查看是否可以找到定义该宏的文件。但是,在执行此操作之前,是否检查了项目属性中是否未定义它(在项目和cpp文件级别)?谢谢您的提示。但我如何才能避免收到这个警告?@juergen:很明显,你在代码中定义了这个符号的时间不合适。正确的方法是首先定义符号,然后包含ATL字符。谢谢您的提示。但我如何才能避免收到这个警告?@juergen:很明显,你在代码中定义了这个符号的时间不合适。正确的方法是首先定义符号,然后包含ATL字符。