c++ - 添加 #include <boost/thread/mutex.hpp> 会破坏我的 ActiveX 控件吗?

标签 c++ visual-c++ boost mfc activex

在 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/

相关文章:

c++ - 乘法运算符不返回值

c++ - 用 boost::phoenix actor 替换一元仿函数

c++ - 删除字符串 vector 中的重复项

delphi - VC工程中调用Delphi函数

C++11线程与boost线程

c++ - 为什么 nvcc 无法使用 boost::spirit 编译 CUDA 文件?

c++ - 如何在 Boost.MPL 中使用嵌套元函数?

c++ - 将类的成员函数传递给 pthread_cleanup_push() 时没有匹配的函数调用

c++ - 计数器变量 : how does it work?

c++ - 链表更改节点而不是添加另一个节点