[英]Difference in relative file path: debug mode and release mode of Qt Creator
QFile file("test.txt");
if (file.open(QIODevice::ReadOnly)) {
qDebug()<<"You got me.";
}
我在用:
從上面的代碼中, 如果.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
復制到release文件夾來測試運行時,我發現如果我通過Qt Creator執行發布程序 ,工作目錄就會像你說的那樣工作。 但是,如果我直接單擊release文件夾中的.exe,情況就像我在問題中所說的那樣。 我認為從Qt Creator運行程序和直接執行程序之間可能存在差異。
這取決於程序的當前工作目錄。 您可以在項目 - >運行設置 - >運行 - >工作目錄中更改它。
如果我通過Qt Creator執行發布程序,工作目錄就會像你說的那樣工作。 但是,如果我直接單擊release文件夾中的.exe,情況就像我在問題中所說的那樣。
這是因為當您單擊release foder中的.exe時,該文件夾是該程序的工作目錄。 從Qt Creator運行程序時,Qt Creator會明確設置工作目錄。 您可以將工作目錄覆蓋為創建.exe文件的目錄,因此無論是從Qt Creator運行程序還是僅在資源管理器中單擊.exe都沒有區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.