2013-08-16 18 views
2

我在Qt中做了一個測試程序,看看我是否喜歡它。所以,我的一個朋友問他是否能看到節目,所以我建項目爲發佈,並在如何讓我的Qt項目靜態(.exe)

build-wordX1-Desktop_Qt_5_1_0_MinGW_32bit-Qt 5.1.0 MinGW 32bit Release \ Release 

保存它,我不知道爲什麼,但是當我打開可執行文件我得到這個

Error Message

我得到了它與另一個程序的工作,但我必須包括1個文件夾和15倍的DLL 這是我必須包括的DLL列表:http://pastebin.com/7AHNWaDE

如果有人可以幫助我」 d是如此g有成效,在此先感謝!

+2

請注意,分發一個靜態鏈接到Qt庫的程序合法需要您購買商業許可證,除非您自己的程序也是在LGPL下分發的。商業許可證並不便宜,因此除非您有足夠的錢包,否則通常會將DLL與您的應用程序捆綁在一起。 – cgmb

+0

@ Slavik81 - 具有諷刺意味的是,Qt for android會生成一個APK,當然它包含了所有的包,但它很好地將它作爲一個文件,並且不需要實際的安裝程序 - apk只是zip文件。 – dtech

+0

也許這個鏈接http://stackoverflow.com/questions/16022967/run-exe-without-qt可以幫助你 –

回答

6

這是一個相當困難的任務,你嘗試。你需要Qt的靜態庫。問題是,我不知道你可以下載它的位置。所以你必須自己編譯它。 您需要下載的來源和配置靜態編譯:

配置-opensource -release -static -nomake例子-nomake演示

-nomake例子-nomake演示節省您的時間。

這給你所有Qt庫的靜態版本。他們以.a結尾。

在你的程序的.pro文件必須添加: CONFIG + =靜態

剩下的就是祈禱。它很可能會失敗,並帶有一些模糊的錯誤信息。網絡充斥着關於靜態Qt構建存在問題的人員的報告。此外,由於許可證的原因,發佈靜態鏈接的Qt程序並不容易。你的程序變得巨大。您不保存任何磁盤空間。而你的程序變得僵化。如果Digia修復了一些bug,那麼Qt庫不會輕易替代。除了極少數例外,其中一個是qt安裝程序框架,我會說:不要打擾靜態Qt。

+0

好的,謝謝你,我真的很期待在我的項目中使用Qt,但我猜不是...感謝您的回答,我嘗試了CONFIG + = static,但它仍然無法正常工作。我想我只會學習Windows API -__________- – Varosion

+0

動態庫是否真的有問題?當你使用靜態庫時,它們只是隱藏在你的二進制文件中。仍然存在並佔據空間。與將它們放入安裝文件夾時沒有多大區別。你說MinGW,所以你在Windows下開發,這意味着你需要一個安裝程序。安裝程序可以輕鬆處理Qt庫的安裝和卸載。對於你的程序的用戶來說,如果他有一個100MB的程序,或者一個10MB的程序和90MB的各種DLL,那麼它並沒有太大的區別。 – Greenflow

+0

@Greenflow這不是事實。靜態鏈接排除不需要的所有代碼。 [Wikipedia](http://en.wikipedia.org/wiki/Static_library) – 2013-08-17 05:59:21