【问题标题】:MFC ASSERT in dllinit.cpp line 703 when using Boost.Log (or Boost.Thread)使用 Boost.Log(或 Boost.Thread)时,dllinit.cpp 第 703 行中的 MFC ASSERT
【发布时间】:2013-10-28 07:28:58
【问题描述】:

当我尝试在我的一个 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之后修复,但是不知道有没有搞定。 按照here 的建议动态链接到 Boost 没有帮助。

到目前为止,在boost-users 上提问并没有帮助。

任何提示,我应该检查什么?

编辑: 它被配置为标准DLL,但对MFC100.dll有依赖,因为我使用afxwin.h中的API来获取应用程序的版本信息。

【问题讨论】:

  • 请提供 cmets,为什么你投反对票,这样我才能改进我的提问方式:)
  • 您创建了哪种 DLL? MFC 扩展 DLL?标准DLL? MFC 是静态链接还是动态链接?

标签: c++ boost mfc boost-thread boost-log


【解决方案1】:

所以我删除了 tools.dll 中对 MFC100.dll 的依赖(GetVersionInfo 无需 afxwin.h 即可工作),因此 helper.dll 中不再依赖 MFC100.dll。

最后我的 DLL 都不依赖于 MFC,因此 ASSERT 也消失了。谢谢 xMRi!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多