2015-01-08 4 views
-1

Windows (Win7 64 비트, VS2012 64 비트 프로젝트)에 이진 파일을 쓰고 있습니다. 그러나 리눅스에서 C++ 프로젝트 (쿠분투 64 비트, GCC 4.7 64 비트 proj)에서 읽으려고한다면. ifstream이 열리지 않습니다. 사실, fopen으로 시도해도 파일을 열 수 없습니다.Linux : Windows에서 작성된 이진 파일을 읽을 수 없습니다.

전체 777 권한을 열어 텍스트 편집기에서 파일을 열려고했는데 모두 괜찮습니다. 파일을 열려면 다음 코드를 사용하여

:

bool success = false; 
//trying weith fopen: 
    FILE *f = NULL; 
    f = fopen("xxx.bin","rb"); 
    if(f != NULL){ 
     success = true; 
    } 
    printf("Stat:%d\n",success); 

//trying with ifstream 
std::ifstream stream; 
stream.open("xxx.bin", std::ios::binary); 
success = stream.is_open(); 
if(!success){ 
     throw; 
} 
printf("Stat:%d\n",success); 

모두 실패합니다.

무엇이 문제 일 수 있습니다. 그리고 크로스 플랫폼 이진 파일을 인코딩 할 때주의해야 할 점이 있습니다. 두 운영 체제 모두 리틀 엔디안을 사용하므로 endianess는 문제가되지 않는다고 가정합니다.

+1

대소 문자를 구분하고 있습니까? – sjdowling

+0

바이너리 파일은 바이트 단위의 블로입니다. Windows 나 Linux는 바이트를 전혀 이해하지 않는 한 관련이 없습니다. 열 수 없다면, 뭔가 잘못되었습니다. 파일은 예상 한 위치에 있지 않을 수 있습니다. – nvoigt

+1

오류 메시지를 인쇄하십시오. – Ben

답변

-1

파일 이름은 대소 문자를 구분합니까? - sjdowling

이것은 대소 문자를 구별하는 것입니다 ... 리눅스에서 사용되는 내 Windows 코드는이를 고려하지 않았습니다. 감사합니다! - Michael IV

관련 문제