gpt4 book ai didi

c++ - 在 Qt Creator 中加载具有相对路径的文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:28 28 4
gpt4 key购买 nike

我正在 Ubuntu 14.04 中使用 Qt Creator 3.1.1 编写 C++ 程序。此代码使用现有库,该库通过传递表示该文件路径的字符串从磁盘加载文件。我遇到的问题是,当字符串表示绝对路径时,文件加载正常,但是当字符串表示相对路径时,它加载失败,说找不到文件。

我的项目在 /home/karnivaurus/project/src 中有源文件,在 /home/karnivaurus/project/build 中有构建文件。我在每个目录中都放置了文件 mesh.STL 的拷贝,也在项目根目录 /home/karnivaurus/project 中。但是当我传递字符串 ../src/mesh.STL../build/mesh.STL../mesh.STL,加载失败。它也因 /../src/mesh.STL/../build/mesh.STL../src/mesh.STL 而失败../build/mesh.STL../mesh.STL

但是,如果我传递字符串 /home/karnivaurus/project/src/mesh.STL/home/karnivaurus/project/build/mesh.STL,它确实会找到文件/home/karnivaurus/project/mesh.STL

这是为什么?我对C++中相对路径的理解有问题吗?还是我需要在 Qt Creator 中配置?在我的 Qt Creator 设置中,我将工作目录设置为 /home/karnivaurus/project/build

我用来加载网格的确切行是:

const aiScene* mesh = MeshLib::loadMesh("../mesh.stl");

对应的错误信息是:

Failed opening file '/mesh.stl' for reading: No such file or directory

此错误消息对我来说很可疑,因为 /mesh.STL 不等同于 ../mesh.STL...

最佳答案

看起来您已经确定工作目录是正确的。鉴于消除了这种可能性,剩下的就是第 3 方库中的错误。

您可以使用 Qt 构造绝对路径:

QString meshPath = QDir().filePath("../mesh.stl"); 
const aiScene* mesh = MeshLib::loadMesh(meshPath.toLatin1().data());

在库的开发人员修复错误之前,这可以作为解决方法。

关于c++ - 在 Qt Creator 中加载具有相对路径的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com