2011-08-02 61 views
0

我在Qt中通過術語動態和靜態編譯。有人可以解釋這種差異,以及在實踐中是如何做到的。如何靜態和動態地編譯Qt插件

+1

退房此鏈接。如何靜態鏈接Qt 4 http://www.formortals.com/how-to-statically-link-qt-4/ –

+0

感謝您的回覆。 – Tharanga

回答

1

首先,您需要將動態插件編譯爲dll,將靜態插件編譯爲靜態庫。

所以對於靜態添加像這樣到你的項目文件

CONFIG *= staticlib # 

動態版本僅僅是一個標準的DLL,即

CONFIG *= dll 

其次,指定要編譯插件:

CONFIG *= qt plugin 

那麼這兩者有什麼區別?

  1. 動態插件是一個dll,它將構建在plugins目錄中,該目錄在運行應用程序時必須位於應用程序路徑中。在部署應用程序時可能會很容易忘記這一點(然後您最終可能沒有縮略圖等)
  2. 靜態插件需要鏈接到您的應用程序中(通常使用配置文件中的QTPLUGIN宏)。只需使用libs * = plugin_name語法鏈接靜態插件庫即可。

我更喜歡2,因爲它可以讓你更好地控制你的編譯環境,使應用程序的部署bug更少...