我正在Windows上编写一个二进制文件(Win7 64bit,VS2012 64bit项目)。在这方面找到它。 但是,如果我试图在Linux上的C ++项目中读取它(Kubuntu 64bit,GCC 4.7 64bit proj).ifstream无法打开它。事实上,也尝试使用fopen,它也无法打开文件。
我尝试打开完整的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不是问题,因为两个操作系统都使用小端。
答案 0 :(得分:-1)
您确定文件名区分大小写吗? - sjdowling
这是它 - 区分大小写的事情......我在Linux上使用的Windows代码没有考虑到它。谢谢! - 迈克尔四世