-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);
都失敗。
可能是什麼問題。編碼跨平臺二進制文件時應該注意什麼。我認爲,因爲兩個操作系統都使用小端編碼,所以在這裏沒有問題。
您是否確定文件名區分大小寫? – sjdowling
二進制文件只是一個字節塊。只要你不想從字節中理解,Windows或Linux就是無關緊要的。如果你不能打開它,那麼基本的東西是不對的。該文件可能不是您所期望的。 – nvoigt
打印錯誤消息。 – Ben