c++ - 访问冲突读取位置-未终止的字符串(不可读的内存)

标签 c++ logging visual-studio-2012 access-violation log4cplus

我正在使用 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 有什么问题,似乎编码或其他东西搞砸了: enter image description here

未终止的字符串(不可读的内存)和字符串末尾的一大堆奇怪的字母?什么可能导致它?

最佳答案

你的问题解决了吗?我有同样的错误,我注意到,我在调试中构建应用程序时链接了 log4cplusU.dll 的发行版本,因此与 log4cplusUD.dll 链接以进行调试配置解决了我的问题

关于c++ - 访问冲突读取位置-未终止的字符串(不可读的内存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18931061/

相关文章:

javascript - Visual Studio 2012 JavaScript 文件中未命中断点

c++ - 从函数返回 "const char * "是个好主意吗?

c++ - 在 GDB 中隐含此参数

java - 追踪文件句柄

database - Visual Studio Borland dll 错误

wpf - Surface SDK 可以在 Visual Studio 2012 上运行吗?

c++ - 二维数组,调用函数问题

c++ - 如果我让类(class)成员公开怎么办?

logging - 如何在TensorFlow中构造任意文本摘要?

java - Log4j2 获取日志记录事件