2013-09-21 73 views
5

Tôi đang sử dụng thư viện log4cplus và tôi không thể đăng nhập để hoạt động.Truy cập vị trí đọc vi phạm - chuỗi không chấm dứt (bộ nhớ không đọc được)

tôi sử dụng mã này:

PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log.properties")); 
Logger g_logger = Logger::getInstance(LOG4CPLUS_TEXT("mylogger")); 

LOG4CPLUS_WARN(g_logger, LOG4CPLUS_TEXT("test test test")); 

Và nó phá vỡ tại LOG4CPLUS_WARN với lỗi: Access violation reading location

Đây là Call Stack của tôi:

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 

nơi wWinMain ... line 55 là nơi LOG4CPLUS_WARN đang được gọi.

Tôi đã kiểm tra những gì xảy ra với basic_ostringstream này và có vẻ như một cái gì đó là điều sai lầm với mã hóa hoặc một cái gì đó: enter image description here

Non-chấm dứt chuỗi (bộ nhớ không đọc được) và một bó toàn bộ chữ lạ ở phần cuối của chuỗi của tôi? Điều gì có thể gây ra nó?

+0

Tôi không biết log4cplus nhưng nó có vẻ là một sự nhầm lẫn char char/hẹp. Chú ý dấu vết stack của bạn nói 'basic_stringbuf john

+0

@john Nhìn vào khung nhìn '_Stringbuffer' mở rộng, nó là một chuỗi ký tự rộng, tất cả các quyền (' L "test test ... "'). – IInspectable

+1

@john Tôi đã thử với '_T', cùng một kết quả thật không may. –

Trả lời

1

Bạn đã khắc phục được sự cố chưa? Tôi có cùng một lỗi, và tôi đã nhận thấy, rằng tôi liên kết với phiên bản phát hành của log4cplusU.dll trong khi ứng dụng được xây dựng trong gỡ lỗi, do đó, liên kết với log4cplusUD.dll cho cấu hình gỡ lỗi giải quyết vấn đề của tôi

+0

Unfortunaltey Tôi chưa giải quyết được vấn đề của mình. Cuối cùng tôi đã sử dụng thư viện GLOG thay vì log4cplus. Dù sao, tôi đã kiểm tra các giải pháp bạn đã đưa ra, tôi nghĩ rằng tôi tìm thấy nó ở một nơi khác cũng có. Nhưng tôi đã sử dụng dlls đúng, vì vậy đó không phải là một lý do trong trường hợp của tôi. –