fstream无法打开文件
fstream fails to open file
我有一个非常奇怪的问题。设置如下:
库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$:^(
相关文章:
- 使用fstream对txt文件中的数字进行循环
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 使 std::fstream 写入文件末尾,但从头开始读取
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- 如何检查文件是否已存在于 fstream C++中
- 使用 fstream 库并在屏幕上打印的文件有问题?
- Windows std::fstream 修改文件后打开()?
- 如何删除文件中的数字,通过 c++ fstream 的
- 如何使用单个fstream创建、读取和写入文件
- 如何使用fstream从.txt文件C++中取出int值
- fstream库,试图创建一个变量名为(c++)的文件
- 变量 std::fstream 文件具有初始值设定项,但类型不完整 编译错误
- 如何在 c++ 中使用 fstream 读取.txt文件
- 为什么错误"permission denied","id returned 1 exit status"仅在 IM 使用 C++ 中的头文件 fstream 时才出现
- 创建.dat文件 (fstream) c++
- 如何读取特定文件fstream
- 在驱动器c:中按类打开文件fstream类
- 使用库更新文件<fstream>(仅覆盖特定部分)
- 读取和写入同一个文件fstream