0

boost :: serialization을 사용하여 매우 간단한 직렬화 코드를 테스트하고 있습니다. 테스트는 단순히 std :: string을 파일에 씁니다.Windows의 문자열에 직렬화 런타임 오류가 발생합니다.

그래도 컴파일되지만 < < 연산자가 호출 될 때 예외가 throw되는 것이 문제입니다. 파일은 비어 있습니다. 가 0xc0000005 : TEST.EXE에서 0x1004b370 (msvcr100d.dll) 0x000000000021647a에서

처리되지 않은 예외 0x000000000021647a

에서 액세스 위반 우리는 윈도우 7 64 비트에 visualC++ 2010로 컴파일 부스트 1.53 라이브러리를 사용하고 있습니다. 또한 인텔 12.1 64 비트로 성공하지 못했습니다.

#include <fstream> 
#include <boost/serialization/string.hpp> 
#include <boost/archive/text_oarchive.hpp> 

int main(int argc, char * argv[]) 
{ 
    std::string s = "HelloWorld!"; 

    std::ofstream file("archive.txt"); 
    boost::archive::text_oarchive oa(file); 

    oa << s; 

    file.close(); 
} 

도움이 필요하십니까?

+0

컴파일 매개 변수? – didierc

+0

부스트가 다운로드 된 폴더에서 다음 행으로 컴파일되었습니다. bjam.exe 변형 = 디버그 링크 = 공유 스레딩 = 다중 런타임 링크 = 공유 --stagedir =./--build-type = complete - 직렬화 주소 모델 = 64 – auroras

+1

'ofstream' 대신'stringstream'을 사용할 때 똑같은 충돌을합니까? –

답변

0

우리 프로젝트에서 사용했던 _HAS_ITERATOR_DEBUGGING = 0 전처리 지시문에 문제가 있음을 발견했습니다. 사용하면 fstream이 제대로 작동하지 않습니다. 어떤 아이디어? 이것은 fstream (있을 법하지 않음)의 버그입니까? 감사합니다