2015-01-08 93 views
-1

我正在Windows上編寫一個二進制文件(Win7 64bit,VS2012 64位項目)。閱讀它在那邊找到。 但是,如果我想在Linux上的C++項目(Kubuntu 64bit,GCC 4.7 64bit 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); 

都失敗。

可能是什麼問題。編碼跨平臺二進制文件時應該注意什麼。我認爲,因爲兩個操作系統都使用小端編碼,所以在這裏沒有問題。

+1

您是否確定文件名區分大小寫? – sjdowling

+0

二進制文件只是一個字節塊。只要你不想從字節中理解,Windows或Linux就是無關緊要的。如果你不能打開它,那麼基本的東西是不對的。該文件可能不是您所期望的。 – nvoigt

+1

打印錯誤消息。 – Ben

回答

-1

您是否確定文件名區分大小寫? - sjdowling

這是它 - 區分大小寫的事情...我在linux上使用的Windows代碼沒有考慮到它。謝謝! - Michael IV