MFC ASSERT in dllinit.cpp line 703 使用 Boost.Log(或 Boost.Thre



当我尝试在我的一个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!

最新更新