当我尝试在我的一个DLL中使用Boost.Log时,我在dllinit.cpp中收到一个断言。
我有一个工具.dll,其中包含我的日志记录工具,我尝试使用 Boost.Log 实现日志记录内容。此工具.dll由另一个帮助程序引用.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>
但这会导致内存泄漏?这个线程说它会在 1.40 之后修复,但我不知道,如果已经这样做了。此处建议的动态链接到 Boost 无济于事。
到目前为止,询问提升用户并没有帮助。
任何提示,我应该检查什么?
编辑:它配置为标准 DLL,但依赖于 MFC100.dll,因为我使用 afxwin.h 中的 API 来获取应用程序的版本信息。
在工具中删除了对MFC100.dll(GetVersionInfo在没有afxwin.h的情况下工作)的依赖.dll因此在帮助程序中不再依赖于MFC100.dll.dll。
最后,我的所有DLL都不依赖于MFC,所以ASSERT也消失了。谢谢xMRi!