在 ActiveX 控件中使用 boost::mutex header 是否存在已知问题?
( boost 版v1.39)
如果我在 Visual Studio 2008 中创建一个名为 “DefaultOCXControl” 的 MFC ActiveX 控件 项目,那么我可以构建它,该控件将自身注册为构建的一部分,并且可以像您期望的那样插入到 ActiveX 测试容器中。一切顺利。
如果我再添加这一行:
#include <boost/thread/mutex.hpp>
在我的 DefaultOCXControlCtrl.h
文件顶部并重建:构建结束时的注册步骤失败并显示:
Debug Assertion Failed!
Program: C:\Windows\system32\regsvr32.exe
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dllinit.cpp
Line: 587
违规断言如下所示:
void AFXAPI AfxCoreInitModule()
{
ASSERT(AfxGetModuleState() != AfxGetAppModuleState());
...
尝试将控件插入 ActiveX 测试容器现在会产生相同的消息。如果我删除该行并重新构建,那么一切都很好 - 所以它肯定是该头文件中导致问题的原因。
最佳答案
您是否尝试过动态链接 boost::thread
(定义 BOOST_THREAD_DYN_LINK)?
我在混合 C++/.NET 项目中使用 boost::thread
时遇到了这类问题,解决方案是动态链接 boost::thread
(此处可能的解释:http://article.gmane.org/gmane.comp.lib.boost.user/22617/match=clr )
关于c++ - 添加 #include <boost/thread/mutex.hpp> 会破坏我的 ActiveX 控件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355931/