經過一個艱苦的奮斗,終於把VS2013和qt5.4 靜態編譯問題搞定了。
首先,感謝 wwkaven 的一步一步靜態編譯的圖文教程
http://blog.csdn.net/wwkaven/article/details/37668859
我按照上面的步驟編譯成功了qt-everywhere-opensource-src-5.4.0-alpha.zip
直接使用QT creator來創建一個靜態項目是完全可以的。
但是在使用VS2013新建一個QT項目的時候,出現了以下錯誤提示,現在我列出我的解決方法,至於為什么這么解決,最后會給出。
在使用VS2013新建qt項目並進行編譯的時候,提示錯誤
1>ClCompile: 1> configsettingview.cpp 1> moc_configsettingview.cpp 1> main.cpp 1> 正在生成代碼... 1> qrc_configsettingview.cpp 1>Qt5Cored.lib(qglobal.obj) : error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(configsettingview.obj 中) 1>Qt5Cored.lib(qobject.obj) : error LNK2038: 檢測到“RuntimeLibrary”的不匹配項: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(configsettingview.obj 中) ...... |
於是在當前項目右鍵->屬性->配置屬性->C/C++->代碼生成 里將運行庫改為 多線程調試(/MTd)
此時再編譯,會出現錯誤如下:
1> 所有輸出均為最新。 1> configsettingview.cpp 1> moc_configsettingview.cpp 1> main.cpp 1> 正在生成代碼... 1> 所有輸出均為最新。 1> qrc_configsettingview.cpp 1>Link: 1> 正在創建庫 d:\mydocuments\visual studio 2013\Projects\ConfigSettingView\Win32\Debug\ConfigSettingView.lib 和對象 d:\mydocuments\visual studio 2013\Projects\ConfigSettingView\Win32\Debug\ConfigSettingView.exp 1>Qt5Guid.lib(qtextengine.obj) : error LNK2019: 無法解析的外部符號 _hb_font_destroy,該符號在函數 "private: int __thiscall QTextEngine::shapeTextWithHarfbuzzNG(struct QScriptItem const &,unsigned short const *,int,class QFontEngine *,class QVector<unsigned int> const &,bool)const " (?shapeTextWithHarfbuzzNG@QTextEngine@@ABEHABUQScriptItem@@PBGHPAVQFontEngine@@ABV?$QVector@I@@_N@Z) 中被引用 1>Qt5Guid.lib(qharfbuzzng.obj) : error LNK2001: 無法解析的外部符號 _hb_font_destroy ..... |
解決方法是:項目右鍵->屬性->配置屬性->鏈接器->輸入 里將附加依賴項
改為
$(QTDIR)\lib\qtmaind.lib;$(QTDIR)\lib\Qt5Widgetsd.lib;$(QTDIR)\plugins\platforms\qwindowsd.lib;winspool.lib;shlwapi.lib;rpcrt4.lib;$(QTDIR)\lib\Qt5PlatformSupportd.lib;$(QTDIR)\plugins\imageformats\qddsd.lib;$(QTDIR)\plugins\imageformats\qicnsd.lib;$(QTDIR)\plugins\imageformats\qicod.lib;$(QTDIR)\plugins\imageformats\qjp2d.lib;$(QTDIR)\plugins\imageformats\qmngd.lib;$(QTDIR)\plugins\imageformats\qtgad.lib;$(QTDIR)\plugins\imageformats\qtiffd.lib;$(QTDIR)\plugins\imageformats\qwbmpd.lib;$(QTDIR)\plugins\imageformats\qwebpd.lib;$(QTDIR)\lib\Qt5Guid.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;glu32.lib;opengl32.lib;gdi32.lib;$(QTDIR)\lib\qtharfbuzzngd.lib;$(QTDIR)\lib\Qt5Cored.lib;kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;mpr.lib;%(AdditionalDependencies)
再次編譯,出現的提示錯誤如下:
File: kernel\qguiapplication.cpp
Line: 1033
This application failed to start because it could not find or load the Qt platform plugin "windows".
Reinstalling the application may fix this problem.
於是在 main.cpp 里添加
#include <QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
再次編譯,OK~
可以愉快的玩耍了
圖片不知道怎么上傳,看文字吧,本來想做圖文版的
至於我為什么這么配置~
用Qt Creator新建一個5.4靜態版本的Qt 項目,然后用VS2013導入,再查看項目屬性,改一下就OK了。
至於最后一步,上官網查資料就好。