2016-11-15 94 views
0

我已經用C編寫的共享庫++使用Qt創建者和QMAKE如何使用qmake在C++中構建獨立的共享庫?

當我編譯我的MinGW的編譯器項目,我需要以合作的圖書館libgcc_s_dw2-1.dlllibstdc++-6.dlllibwinpthread-1.dll接下來將要複製到我的DLL。其大小約爲1.5兆字節。

當我使用MSVC 2015編譯器編譯我的項目時,我需要在部署系統上安裝Visual C++ Redistributable 2015 x86。其大小約爲13兆字節。

我的項目的大小不到100千字節,所以這些依賴關係非常大。

如何將它們嵌入到我的庫中?或者我如何在Windows 7或更高版本中在我的項目旁邊安裝或複製更少的依賴項?

PS 1:我已閱讀this,但MinGW方法與以前相同。我在Microsoft Tools方法中遇到錯誤。

PS 2:也許.Net Framework 2.0是一個更好的選擇,因爲它預裝在Windows 7上,我們可以強制.Net 4.5在Windows 8/8.1/10中運行它。你不老嗎?

回答

0

只需靜態鏈接標準庫。你的DLL的大小會明顯增加(我希望這不是問題),但不是那麼多(< 1 MB)。

爲了做到這一點:

如果使用MSVC添加/ MT到命令行(你可以在項目屬性窗口中找到它太)。

如果你使用g ++ add'--static'。

+0

/MT做了詭計,我曾嘗試過,但我不知道它爲什麼現在起作用。該項目是30 KB,現在是99 KB –

+0

99KB!祝你好運哥們。有時如果你靜態使用的其他庫不是用這個標誌構建的,那麼/ MT將不起作用。它發生。不用擔心,但你必須再次用這面旗子來建造它們! – Shahin

0

我認爲你不能那樣做,你的項目必須設置在靜態或動態鏈接上,而不是兩者都在一起。

+0

你的意思是沒有辦法建立一個單一的圖書館,並把它交給別人? –