fstream无法打开文件

fstream fails to open file

本文关键字:文件 fstream      更新时间:2024-09-21

我有一个非常奇怪的问题。设置如下:

库A使用库B

这两个库都作为共享库独立安装,A使用CMake包链接到B。

当我创建一个直接链接到B的可执行文件时,一切都很好。然而,当我创建一个链接到A的可执行文件时,它正在使用B,那么由于某种原因,我在B中的fstream无法打开特定的文件。我100%确定该文件存在,不需要授权,并且当前未使用。strerror(errno(引发的错误是";没有这样的文件或目录";。

我真的不知道会出什么问题。这是我用来打开的代码片段:

ifstream f;
f.open(filename.c_str(), ios_base::in|ios::binary);
if (f.fail()) {
std::cout << "Opening Vocabulary failed: " << std::strerror(errno) << std::endl;
return false;
}

我反复检查了文件名中的路径是否正确。这些是我能想到的最后的度假胜地:

  • 也许库A使用另一个C++标准作为B,这就是对fstream的调用失败的原因
  • 也许文件名字符串在某种程度上被破坏了,即使路径似乎是正确的
  • 也许内存泄漏破坏了我的c_str((命令

还有什么我可以检查的吗?

Edit:啊,我忘了一件事:fstream命令在头文件的模板函数中。也许这与此有关?

第二版:这是堆栈跟踪"ORBVoc.bin";是我想要打开的文件。我从中得到的唯一信息是,它不存在。。。尽管它确实存在。

https://www.file-upload.net/download-14359408/strace.log.html

好吧,显然只需要重新启动。今天,一切都完美无瑕。没有更改任何权限、文件或代码行。当我的笔记本电脑从休眠状态恢复时,我想要么是出了严重的问题。或者是一些悬而未决的ubuntu更新?我真的不知道。我可以发誓,在过去的2-3天里,它至少关闭了一次。但是jeah,我没有其他解释。也许一个更聪明的人可以用他的玻璃球来回答这个问题。。。

不管怎样,谢谢你的回答,谢谢!至少我了解了strace$:^(