簡體   English   中英

相對文件路徑的差異:Qt Creator的調試模式和發布模式

[英]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.";
 }

我在用:

  • 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復制到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM