【发布时间】:2018-04-16 02:09:32
【问题描述】:
我正在尝试使用 log4cplus 在 C++ 应用程序中实现日志记录。我能够成功构建/链接(我将 log4cplus.lib 添加到我的其他库中并将 log4cplus.dll 复制到构建/outdir)
当我运行我的应用程序时,当它执行我的 Logger::getInstance 调用时出现以下异常:
LogTesterConsole.exe 中 0x75cad36f 处的未处理异常:Microsoft C++ 异常:内存位置 0x0013ed8c 处的 std::bad_alloc..
我尝试将调用放在我的 main() 例程之外以及内部,并得到相同的结果。
有什么想法吗?
代码:-
#include "stdafx.h"
#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>
#include <log4cplus/configurator.h>
using namespace log4cplus;
int _tmain(int argc, _TCHAR* argv[])
{
BasicConfigurator config;
config.configure();
Logger logger = Logger::getInstance(LOG4CPLUS_TEXT("main"));
LOG4CPLUS_WARN(logger, LOG4CPLUS_TEXT("Hello, World!"));
return 0;
}
【问题讨论】:
-
头文件路径中不要使用反斜杠,而是使用斜杠
-
@Josh:我是 log4cplus 的维护者。请尝试在调试器下的 Visual Studio 中运行它,看看哪里抛出了异常。
-
@wilx:跟踪到 PropertyConfigurator::doConfigure 调用,它看起来像是在 PropertyConfigurator 构造函数中向南走(带有 'const tstring& propertyFile' arg 签名的那个)看起来它发生在 std: :basic_string::assign。从构造函数看propertyFile arg的值,好像是乱码。
-
仅供参考:我在 Win7 上,使用 VS2010。我从 VS 解决方案构建了 log4cplus,没有修改任何项目设置。
-
我能够从 log4cplus 解决方案成功地运行调试测试(虽然我得到了“无法打开文件 log4cplus.properties”的错误,这是我的预期)我一直在梳理差异和还没有发现任何感兴趣的东西。
标签: c++ windows runtime-error log4cplus