2013-09-21 10 views
5

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에서 나누기 : wWinMain ... line 55 어디 장소 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 

: Access violation reading location

이 내 호출 스택입니다 호출되고 있습니다.

나는이 basic_ostringstream 뭐가 잘못 됐는지 확인하고는 뭔가가 인코딩 또는 뭔가 엉망 것 같다

: enter image description here

비 끝나는 문자열 (읽을 메모리)과의 마지막에 이상한 문자의 전체 무리 내 끈? 무엇이 그 원인이 될 수 있습니까?

+0

log4cplus 그러나 그것은 넓은 char/좁은 char 혼란 인 것처럼 보인다. 스택 추적에'basic_stringbuf john

+0

@john 확장 된'_Stringbuffer' 뷰를 보아라. 와이드 문자 스트링이다. ('L "테스트 테스트 ... "). – IInspectable

+1

@john 나는 불행하게도'_T'로 시도해 보았습니다. –

답변

1

문제가 해결 되었습니까? 내가 응용 프로그램이 디버그에서 빌드 된 동안 log4cplusU.dll의 릴리스 버전과 링크 된 동일한 오류가 있음을 알았습니다. 따라서 디버그 구성을위한 log4cplusUD.dll과의 연결이 내 문제를 해결했습니다.

+0

Unfortunaltey 나는 아직 내 문제를 해결하지 못했다. 마침내 log4cplus 대신 GLOG 라이브러리를 사용했습니다. 어쨌든, 나는 이미 당신이 준 해결책을 확인했습니다. 나는 다른 곳에서도 그것을 발견했다고 생각합니다. 하지만 적절한 DLL을 사용하고 있었기 때문에 그것이 내 경우에는 이유가 아니 었습니다. –