定制服裝定做廠家seo百度seo排名優(yōu)化軟件
MinGW/MSVC的關(guān)系
- MinGW / MSVC
- .dll / .lib / .a 的關(guān)系
MinGW / MSVC
Qt 中有兩種方式編譯:一種是MinGW ,另一種MSVC,是兩種不同的編譯器。
- MinGW(Minimalist GNUfor Windows),它是一個可自由使用和自由發(fā)布的Windows特定頭文件和使用GNU工具集導(dǎo)入庫的集合,允許你在Windows平臺生成本地的Windows程序而不需要第三方C運行時(C Runtime)庫。
- MSVC,是第三方C運行時庫:由微軟開發(fā)的VC運行時庫,被Visual Studio IDE所集成。所以我們使用VS時會附帶MSVC編譯器。
- 它們都是很好用的編譯工具,但是它們兼容的并不好。當你的項目使用MinGW編譯的使用,想要用一個MSVC編譯生成的庫時就會有問題。使用MinGW編譯項目的時候,所使用的Lib也要是MinGW編譯的。如果你只是開發(fā)Window平臺的軟件時,最好用Qt MSVC組合,這樣可以使用大量的第三方lib,還有很多的構(gòu)建指令。我認為在任何平臺下,越貼近原生的東西總能得到更多的優(yōu)化,MinGW始終不是Windows親生的,bug比親生的VS多很正常。
.dll / .lib / .a 的關(guān)系
在調(diào)用第三方庫時總會遇到這幾個格式的文件,總結(jié)一下
- .lib:用于MSVC編譯器中 (MSVC 微軟自己的編譯器)
- .dll / .a:用于MinGW編譯器中(MinGW gcc/g++,MinGW則是指Minimalist GNU for Windows的縮寫)
- dll:真正存放函數(shù)體的地方,所有代碼內(nèi)容都在dll里面,.lib里面只有符號信息。
在使用Qt MinGW編譯器是需要用到.a文件以及include文件夾,以O(shè)penCV動態(tài)庫為例,需要在.pro項目文件中添加以下代碼:
INCLUDEPATH += D:\Git\OpenCV-MinGW-Build-OpenCV-4.0.1-x64\include
LIBS += D:\Git\OpenCV-MinGW-Build-OpenCV-4.0.1-x64\x64\mingw\lib\lib*.a
在使用Qt MSVC編譯器時需要用到.lib文件以及include文件夾,以O(shè)penCV動態(tài)庫為例,需要在.pro項目文件中添加一下代碼:
win32:CONFIG(release, debug|release): LIBS += -LD:/OpenCV/opencv/build/x64/vc15/lib/ -lopencv_world410
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/OpenCV/opencv/build/x64/vc15/lib/ -lopencv_world410d
或者通過圖形界面直接添加庫: