QFile file("test.txt");
if (file.open(QIODevice::ReadOnly)) {
qDebug()<<"You got me.";
}
我正在使用:
- Qt 4.8.6与MSVC 2010
- Qt Creator 3.1.1
- Windows 7(32位)
.pro
文件未更改,则对应的构建目录为调试模式:D:\...\build-Main-MSVC2010-Debug
调试模式的.exe
将被放置在以下位置:
D:\...\build-Main-MSVC2010-Debug\debug
对于发布模式:
D:\...\build-Main-MSVC2010-Release
发布模式下的.exe
文件将位于以下位置:
D:\...\build-Main-MSVC2010-Release\release
[问题]
如果我想让发布程序
读取“test.txt”文件,我需要将该文件放置在一个文件夹中。
D:\...\build-Main-MSVC2010-Release\release
这很合理。但是如果我想让 调试程序 读取 "test.txt" 文件,我必须将文件放在该文件夹中。
D:\...\build-Main-MSVC2010-Debug\
而不是
D:\...\build-Main-MSVC2010-Debug\debug
我一直纳闷在调试和发布模式下为什么相对路径的工作方式不同,这一点困扰了我很长时间。
[编辑]
感谢 @Paul 和 @lpapp。这是工作目录的屏幕截图:
调试:
发布:
[非常重要的编辑]
针对 @Paul 和 @lpapp:
我曾经将所需的.dll
复制到发布文件夹中进行运行时测试,并且我刚刚发现如果我通过Qt Creator执行发布程序,那么工作目录会像你们说的那样正常工作。但是,如果我直接在发布文件夹中点击.exe文件,则情况将与我在问题中所述的一样。我认为从Qt Creator运行程序和直接执行程序之间可能存在差异。
QCoreApplication::applicationDirPath()
可以解决一切。 - Tay2510applicationDirPath()
。这样更安全。 - Tay2510