2009-12-22 113 views
17

我想部署我的簡單的Qt項目像一個你好的世界。如何使用Qt-Creator部署我的應用程序?

我構建成功,也可以在Qt-Creator上執行它。但是,由於某些共享庫錯誤,我無法直接在發佈文件夾中執行二進制文件。

所以我只是複製一些必要的圖書館到版本文件夾,如qtcore.dll和qtgui.dll,但我不能仍然執行它。

如何部署我的簡單Qt項目?是否有另一個步驟來部署它?

+0

什麼是錯誤信息? – 2009-12-22 15:57:53

+0

錯誤消息是在QtCore4.dll中找不到過程的起點。這個錯誤信息可能不完全是因爲它被我翻譯成英文。 – Brian 2009-12-22 23:41:15

回答

19

您還需要部署MinGW的運行時DLL(mingwm10.dll)。該文件位於您的Qt\2009.5\mingw\bin目錄中。

還要注意您的應用程序是否以調試模式或發佈模式編譯。我剛剛用一個hello world類型的應用程序和Qt Creator進行了測試。在debug文件夾中,我複製了libgcc_s_dw2-1.dll,mingwm10.dll,QtCored4.dllQtGuid4.dll,它工作正常。

,請注意d在DLL名稱,它代表調試:QtCored4.dll

請參閱Qt 4.6: Deploying an Application in Windows。 Qt的5,檢查​​

+0

我複製了該文件和libgcc_s_dw2-1.dll,但發生了以下錯誤消息。程序的起點在QtCore4.dll中找不到。這個錯誤信息可能並不完全是因爲它被我翻譯成英文 – Brian 2009-12-22 23:46:26

+0

@brian>你使用的是哪個版本的Qt,這是LGPL版本嗎?你是否注意到Qt庫的調試和發佈版本? – 2009-12-23 17:56:06

+0

謝謝。我解決了這個問題。它失敗了,因爲我使用位於Qt \ 2009.5 \ bin目錄中的qtcore.dll和qtgui.dll。當我使用位於Qt \ 2009.5 \ qt \ bin目錄中的這些文件時,它運行良好。 – Brian 2009-12-25 11:32:47

1

嘗試運行依賴關係的walker(http://dependencywalker.com/)以查看哪些dll丟失了?

通常,您不需要將這些Qt庫移動到本地文件夾中,因爲Qt安裝應該將這些庫添加到您的路徑中。

一種可能性是,你建立調試,和Qt調試的DLL名稱不同

11

如果你不希望有QT/MinGW的DLL文件,你應該編譯QT靜態的解釋這裏的依賴關係:http://qt.nokia.com/doc/4.6/deployment-windows.html#static-linking

+4

這假設您有執照。靜態鏈接需要商業許可證。 – drowe 2010-06-01 16:37:17

+3

@Drowe:您不必購買商業授權,您只需要在LGPL/GPL授權下發布源代碼。 – Seba 2011-03-19 19:29:29

+1

@Seba - 正確,好點。我(可能)不正確的假設。 – drowe 2011-03-24 18:11:50

2

您也可以使用靜態鏈接,只需添加這行到.pro文件:

QMAKE_LFLAGS += -static-libgcc

我找到了解決辦法here併成功地在WinXP測試與Qt Creator的2.2.0

-6

將所有qt dll直接複製到你的windows目錄下「C:\ Windows \」並且不會出現qt dll錯誤 100%工作和簡單 nb:不要在yo中創建一個qt dll文件夾你的Windows目錄發佈他們,因爲他們是

+1

這是一個壞主意......從來沒有對窗口進行垃圾處理,並且在部署應用程序時從不使用此方法。花時間查看需要哪些文件,並將它們與您的應用程序一起部署。雖然老問題/答案..最好建議人們這不是一個好主意 – Mayhem 2014-07-30 09:05:24

+0

這是一個不好的做法。如前所述,查找所需的dll並在部署期間相應地添加它們。 – 2016-08-02 07:54:05