程式執行

點擊檔案->新增專案或專案,有四種專案類型,我們這邊選擇Widgets應用程式。

enter image description here

enter image description here


對此專案設定名稱和檔案位置。

enter image description here


選擇開發版本

enter image description here


選擇基礎類別和專案窗口的類別名,並完成專案設定。

enter image description here


按下執行後,我們可以看到Qt Creator為我們預設的QWidget。

enter image description here


專案建置完成後,到剛剛設定的路徑,可以看到Qt Creator自動生成的幾個文件。

當編譯完後,Qt Creator會將我們編譯後的檔案另外放置,以我們test的專案為例,同路徑下有build-test-Desktop_Qt_5_4_1_MinGW_32bit-Debug的資料夾,裡面有debug和release版本的exe執行檔。

實際打開debug資料夾內的exe檔,我們會發現錯誤,原因為我們缺少相關的dll檔,這邊有以下兩個解決方法:

  • 假設exe檔不用發佈,單純個人使用,可以在系統的環境變量添加路徑,以win8.1為例,點擊控制台->系統及安全性->系統->進階系統設定->環境變數->編輯,在最後面添加C:\Qt\Qt5.4.1\5.4\mingw491_32\bin後按確定,實際添加內容要看個人的Qt版本及安裝位置。
  • 假設要發佈給別人使用,自然無法要求別人安裝Qt並自行添加路徑,我們以最陽春的mainWidget為例,去Qt安裝目錄下的bin資料夾,這邊的位置在C:\Qt\Qt5.4.1\5.4\mingw491_32\bin內,複製缺少的dll檔放置於exe檔旁,持續運行並添加其他缺少的dll檔,這邊一共複製了以下9個dll檔才啟動成功。

enter image description here

enter image description here


假如我們要發布該程式給別人,由於debug版本的dll檔所佔空間較大,所以通常編譯release版本,發布release版本以及相關dll檔給使用者,這邊我們改變設定,改成編譯release版本。

enter image description here

實際打開release資料夾內的exe檔,也會有同樣錯誤,同樣去Qt安裝目錄下的bin資料夾,複製缺少的dll檔(通常檔名最後會少個d)放置於exe檔旁,也是複製了9個dll檔才運行成功。


所謂的靜態編譯與動態編譯,這兩者是相對的,差別在於發佈時有沒有另外包含dll檔,有包含的為動態編譯,否則為靜態編譯,靜態編譯不需要包含dll檔,代價就是exe檔案內容較大,而且缺乏靈活性無法部屬插件。通常使用較大的函式庫會另外包含dll檔(像Qt、OpenCV等)。

  • miss97989

    windeployqt 是打包指令