前言
因为本人不习惯使用Qt Creator,因而使用VS2015进行开发。在Qt官网下载【Qt VS Tools】这个工具后,可以正常使用Qt动态库的开发。但这样的话程序打包发布时,需要带上很多的DLL方可正常运行,于是静态编译打包发布便应运而生。
准备工作
- 我们需要Qt编译好的静态库(静态编译过程有很多教程,这里不再多说)。
- 安装VS2015。
- Qt VS Tools插件。
正题
将编译好的Qt静态库添加进来。
正常新建一个Qt GUI Applications,这个时候,需要将Qt版本切换至静态
方法:【解决方案管理器中点右键】->【Qt Project Settings】->【version一栏中切换你的Qt静态版本】OK,现在编译的话,会有一大堆的链接错误。接下来的步骤才是重中之重:
Debug 版
在项目配置属性中:【链接器】->【输入】->【常规】->【附加库目录】中
加入 $(QTDIR)\plugins\platforms
在项目配置属性中:【链接器】->【输入】->【附加依赖项】中,原来只有:
- qtmaind.lib
- Qt5Cored.lib
- Qt5Guid.lib
- Qt5Widgetsd.lib
需要加入以下lib才可以正常编译:
imm32.lib
winmm.lib
opengl32.lib
ws2_32.lib
glu32.lib
qtpcre2d.lib
qwindowsd.lib
qtharfbuzzd.lib
qtlibpngd.lib
qtfreetyped.lib
Qt5ThemeSupportd.lib
Qt5EventDispatcherSupportd.lib
Qt5AccessibilitySupportd.lib
Qt5FontDatabaseSupportd.lib
dwmapi.lib
version.lib
uxtheme.lib
在main.cpp文件中,加入:
#include <QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
在项目配置属性中:【C/C++】->【代码生成】->【运行库】,
【多线程调试 DLL (/MDd)】 改为 【多线程调试 (/MTd)】
做完以上步骤后,按下F7,是不是很爽呢?一大堆无法解析的外部命令都没了。
Release 版
Release版的和Debug的差不多,只需要把库中带“d”的去掉就可以了。
在项目配置属性中:【链接器】->【输入】->【常规】->【附加库目录】中
加入 $(QTDIR)\plugins\platforms
在项目配置属性中:【链接器】->【输入】->【附加依赖项】中,原来只有:
- qtmain.lib
- Qt5Core.lib
- Qt5Gui.lib
- Qt5Widgets.lib
需要加入以下lib才可以正常编译:
imm32.lib
winmm.lib
opengl32.lib
ws2_32.lib
glu32.lib
qtpcre2.lib
qwindows.lib
qtharfbuzz.lib
qtlibpng.lib
qtfreetype.lib
Qt5ThemeSupport.lib
Qt5EventDispatcherSupport.lib
Qt5AccessibilitySupport.lib
Qt5FontDatabaseSupport.lib
dwmapi.lib
version.lib
uxtheme.lib
在main.cpp文件中,加入:
#include <QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
在项目配置属性中:【C/C++】->【代码生成】->【运行库】,
【多线程调试 DLL (/MD)】 改为 【多线程调试 (/MT)】