在 MFC dll 中包含 boost mutex 头文件时断言

Posted

技术标签:

【中文标题】在 MFC dll 中包含 boost mutex 头文件时断言【英文标题】:Assert when including boost mutex header file in MFC dll 【发布时间】:2017-07-28 20:55:53 【问题描述】:

我有 boost 1_57 的标头版本。我想在我的代码中使用 object_pool 的功能。 但是我看到,如果我只是将此头文件包含到使用我的 mfc dll 项目编译的任何 .cpp 文件中,那么当我在调试模式下运行使用此 dll 的程序时,dllinit.cpp 中有一个断言:

void AFXAPI AfxCoreInitModule()

    ASSERT(AfxGetModuleState() != AfxGetAppModuleState());
    ...

我看到标头也包含并且包含在我的 cpp 文件中也会导致该断言。

【问题讨论】:

【参考方案1】:

这似乎是 Boost 中的一个问题(与 MFC 不兼容),在 _pRawDllMain 处理中。

请参阅此处了解可能的解决方案:http://boost.2283326.n4.nabble.com/Fwd-Thread-Solution-to-conflict-with-MFC-td3477977.html

【讨论】:

以上是关于在 MFC dll 中包含 boost mutex 头文件时断言的主要内容,如果未能解决你的问题,请参考以下文章

CPack 不包含 mfc100.dll

如何在 CMake 中包含 boost::future?

在make文件中包含boost库

如何返回由 boost::variant 返回类型中包含的类型的子集组成的 boost::variant

如何构建boost以在库中包含boost_python-vcxx-mt-gd-1_xx.lib

将 UI 插入另一个 MFC 对话框