经过一个艰苦的奋斗,终于把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了。
至于最后一步,上官网查资料就好。