我打电话的时候
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
申请类型:
在创建JavaVM之前调用PatternLayout::~PatternLayout()
之后,它会遇到异常。
Aaditi:
我的项目解决方案的结构是:
项目app,xcom,system gtk和service在初始时加载log4cplus,systemd gtk和xcom在app和service内部运行时加载。
我在app.exe中初始化log4cplus并想在systemgtk.dll中关闭它。
Aadita:
好的,它似乎是一个构建配置问题。我不知道怎么回事,但我解决了这个问题。
我发现在“配置属性 - >常规”面板中,如果“使用MFC”设置为“在共享DLL中使用MFC”,则错误将消失;但如果将其设置为“在静态库中使用MFC”,则会显示错误。