当我尝试在我的一个 DLL 中使用 Boost.Log 时,我在 dllinit.cpp 中收到一个断言。
我有一个 tools.dll,其中包含我的日志记录工具,我尝试使用 Boost.Log 实现日志记录。 此 tools.dll 被另一个 helper.dll 引用,并且两个 DLL 都在应用程序中使用。
但是,当我启动应用程序时,我得到了 ASSERT。
Boost 1.54 和(包含的)Boost.Log 以及 Boost 1.48 和 Boost.Log 1.1 都会发生这种情况。
我翻阅了大量邮件列表和旧帖子。到目前为止我所了解的是,Boost.Thread 中的 _pRawDllMain 指针存在问题,有人建议在
中将其注释掉#include <boost/thread/detail/tss_hooks.hpp>
但这会导致内存泄漏? 这thread说它会在 1.40 之后修复,但我不知道,是否已完成。 按照建议动态链接到 Boost here没有帮助。
询问boost-users到目前为止没有帮助。
任何提示,我应该检查什么?
编辑: 它被配置为标准 DLL,但对 MFC100.dll 有依赖性,因为我使用 afxwin.h 中的 API 来获取应用程序的版本信息。
最佳答案
所以我删除了 tools.dll 中对 MFC100.dll 的依赖(GetVersionInfo 在没有 afxwin.h 的情况下工作),因此 helper.dll 中不再依赖 MFC100.dll。
最后我的 DLL 都不依赖于 MFC,所以 ASSERT 也消失了。谢谢 xMRi!
关于c++ - 使用 Boost.Log(或 Boost.Thread)时 dllinit.cpp 行 703 中的 MFC 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19629204/