log4cplus:Windows上的Logger :: shutdown崩溃

问题描述 投票:1回答:1

我打电话的时候

log4cplus::Logger::shutdown();

它在log4cplus类的解构器上抛出异常Invalid address specified to RtlFreeHeap( 02BF0000, 02B71170 )

我正在使用log4cpp 1.2.x(来自当前的1.2.x分支)和Visual Studio 2010 SP1。我编译我的应用程序以在Win32架构上工作,但是在为x64编译时它也会崩溃。我创建了log4cplus作为DLL文件,并添加了log4cplus.lib文件作为我的应用程序的附加依赖项,以链接它加载时间。我有一些其他DLL文件,它们是运行时动态加载到应用程序中的。运行时加载的DLL也依赖于log4cplus。

log4cplus的日志系统尽早初始化,以支持我的应用程序的每个阶段的日志记录(作为main方法中的第一次调用)。

混合加载时和加载运行时的DLL文件是一个问题吗?

PS:我有一些关于C ++编程的基础知识。

编辑:

操作系统:Windows 8.1 x64

申请类型:

  • WinAPI上的GUI应用程序(自定义预加载器,更新机制和用户登录)
  • 本机调用jvm.dll创建JavaVM(用户登录后的主应用程序,用Java编写)

在创建JavaVM之前调用PatternLayout::~PatternLayout()之后,它会遇到异常。

Aaditi:

我的项目解决方案的结构是:

  • app(可执行文件)
  • xcom(用于与Java通信的DLL库)
  • systemgtk(用于注册表访问和GUI的DLL库)
  • 服务(可执行文件,后台更新程序,作为Windows服务运行)
  • log4cplus

项目app,xcom,system gtk和service在初始时加载log4cplus,systemd gtk和xcom在app和service内部运行时加载。

我在app.exe中初始化log4cplus并想在systemgtk.dll中关闭它。

Aadita:

好的,它似乎是一个构建配置问题。我不知道怎么回事,但我解决了这个问题。

c++ windows logging dll log4cplus
1个回答
0
投票

我发现在“配置属性 - >常规”面板中,如果“使用MFC”设置为“在共享DLL中使用MFC”,则错误将消失;但如果将其设置为“在静态库中使用MFC”,则会显示错误。

© www.soinside.com 2019 - 2024. All rights reserved.