我成功地能夠編譯和運行我的Qt應用程序。但是,當我將.exe文件移動到其原始路徑之外時,我發現必須手動複製Qt DLL(例如mingw10.dll,qtcore4.dll)。有沒有任何動態的方式來鏈接這些庫與我的應用程序?編譯Windows的Qt應用程序的分佈
1
A
回答
4
我想你的意思是你想「靜態」鏈接這些庫與您的應用程序。 基本上這意味着所有的東西都會在你的exe文件中滾動,而且你不再需要這些dll。
有對靜態鏈接的優點,但也有缺點。你應該絕對確定這是你在這樣做之前想要做的事情。
看看這個鏈接,深入闡述Dynamic Linking vs Static Linking
至於你的具體問題的區別,如果你一定要使用靜態鏈接時,你將不得不改變你的Qt設置靜態地建造。默認情況下,Qt分配設置爲使用動態鏈接。有一個方便的指南here。
基本上當你設置你必須運行「配置-static」改變所有的項目設置,而不是使用動態鏈接靜態鏈接的版本。然後再次構建Qt。
您還應該驗證您的Qt許可證。如果您使用的是Qt LGPL許可證,並且想要靜態鏈接,則必須包含MihaiLimbăşan在其評論中明智解釋的所有對象文件(.o和.obj)。如果你已經購買並支付Qt,那麼你沒有問題。
2
如果DLL是在PATH的應用程序,那麼他們將被找到和工作。因此,您可以將您的Qt二進制文件/ dll添加到%PATH%環境變量中。如果你要爲你的應用程序創建一個安裝程序,你需要將這些庫打包,以便它們位於bin目錄中 - 否則你將不得不期待每個用戶都安裝並可能自己編譯Qt(提示:去的第一個選項:))
相關問題
- 1. 編譯的Qt 5.2的應用程序的編譯器MSVC2008
- 2. 從Windows到Ubuntu的交叉編譯應用程序qt
- 3. 從Windows的命令行編譯Qt應用程序
- 4. 編譯在Qt應用程序
- 5. Qt應用程序不會編譯
- 6. 編譯並執行Qt應用程序
- 7. 編譯Qt應用程序爲Windows Mobile 5
- 8. 從Windows到Mac OS交叉編譯Qt應用程序
- 9. 在Windows XP編譯Qt的程序使用MinGW的G ++
- 10. 翻譯Qt應用程序
- 11. Qt的編譯 - 在Windows
- 12. 使用Visual Studio 2012的編譯器爲Windows XP製作Qt應用程序
- 13. 爲Windows XP編譯C#應用程序
- 14. Windows 8.1應用程序無法編譯
- 15. 爲Windows編譯Linux應用程序(C)
- 16. Qt程序無法編譯
- 17. 編譯使用qt和cygwin編譯器的獨立應用程序
- 18. 在Windows下編譯的QT應用程序不能正確執行計算
- 19. 編譯Linux上的Mac OS X的Qt應用程序
- 20. 編譯Qt應用程序,以獲得更好的debuginfos(Linux)的
- 21. 無法編譯使用gSOAP的Qt Symbian應用程序
- 22. 打包使用共享庫編譯的qt應用程序
- 23. 使用MinGW編譯獨立的Qt應用程序
- 24. Windows上的Qt應用程序
- 25. Qt在qt 5.0.2上分發windows應用程序
- 26. 分配BlackBerry編譯應用程序
- 27. 基本的QT應用程序不運行,但編譯
- 28. Qt應用程序的跨平臺編譯
- 29. MacOS上的Qt/OpenGL/GPU應用程序編譯問題10.6
- 30. 使用Qt Creator交叉編譯Qt應用程序的簡單方法?
靜態鏈接不違反LGPL這樣,但你必須提供您的應用的.o/.OBJ文件,以便最終用戶可以通過不同的(兼容)的Qt版本,把你的目標文件重建工作的可執行文件。有關更多詳細信息,請參閱此處:http://stackoverflow.com/questions/2945612/2946131#2946131 – 2010-11-30 20:15:43