当我打电话
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()
后会遇到异常。
EDIT2:
我的项目解决方案的结构是:
项目app,xcom,systemgtk和serivce在初始时加载log4cplus,systemgtk和xcom在应用程序和服务内部运行时加载。
我在app.exe中初始化log4cplus并希望在systemgtk.dll中关闭它。
edit3:
好的,它似乎是一个构建配置问题。我不知道怎么做,但我解决了这个问题。
答案 0 :(得分:0)
我发现在"配置属性 - >一般"小组如果"使用MFC"设置为"在共享DLL中使用MFC",错误将消失;但如果它设置为"在静态库中使用MFC",则会显示错误。