我正在使用 log4cplus 库,但无法使日志记录正常工作。
我使用这段代码:
PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log.properties"));
Logger g_logger = Logger::getInstance(LOG4CPLUS_TEXT("mylogger"));
LOG4CPLUS_WARN(g_logger, LOG4CPLUS_TEXT("test test test"));
它在 LOG4CPLUS_WARN
处中断并出现错误:
访问违规读取位置
这是我的调用栈:
msvcp110d.dll!std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >::egptr() Line 236 C++
ProjectClientd.exe!std::basic_stringbuf<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::str() Line 103 C++
ProjectClientd.exe!std::basic_ostringstream<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::str() Line 553 C++
> ProjectClientd.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) Line 55 C++
ProjectClientd.exe!__tmainCRTStartup() Line 528 C
ProjectClientd.exe!wWinMainCRTStartup() Line 377 C
wWinMain ... line 55
是调用 LOG4CPLUS_WARN
的地方。
我已经检查过这个 basic_ostringstream
有什么问题,似乎编码或其他东西搞砸了:
未终止的字符串(不可读的内存)和字符串末尾的一大堆奇怪的字母?什么可能导致它?
最佳答案
你的问题解决了吗?我有同样的错误,我注意到,我在调试中构建应用程序时链接了 log4cplusU.dll 的发行版本,因此与 log4cplusUD.dll 链接以进行调试配置解决了我的问题
关于c++ - 访问冲突读取位置-未终止的字符串(不可读的内存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18931061/