vs2015使用qt静态库5.7

MFC库现在基本上没落了, 用的人越来越少,现在一般做GUI开发都是使用Qt,  Qt这个东西实现比MFC不知道高到哪里去了, 使用起来更符合直觉, 学起来更简单,可惜了没有一个好爹, 一直没有火起来!!

Qt这个GUI库还是比较好用的, 只是在Windows上没有办法静态编译,每次发布都要带一堆的东西, 比较恶心!!这两天实在受不了了, 倒腾了一下Qt的静态编译。

1.下载Qt静态库

虽然Qt官方没有发布Qt的静态编译版本, 但是网上有爱好者自己把Qt的各个版本静态库编译好了, 直接下载就可以用。 省去了自己编译的麻烦!!

http://www.npcglib.org/~stathis/blog/precompiled-qt4-qt5/
编译的版本算是比较完整的, 我下载的是 Qt5 v5.7.0 (MSVC2015) 下载然后配置项目。
2.安装Qt5 Package

在vs2015的“扩展和更新”中寻找《Qt5Package》这个扩展,或者在下面网站下载然后安装,并重启

http://download.qt.io/development_releases/vsaddin/
打开扩展QT5,配置QT静态库中的bin目录,然后Reinstall template……

3.配置项目

虽然利用扩展给我们创建了一个项目模版,但是这个模版只能使用qt的动态库,静态库无法使用,  如果想编译静态编译,需要配置以下信息:

首先,在“链接器”-》“常规”-》“附加库目录”-》添加《$(QTDIR)\plugins\platforms》这个目录,即平台扩展静态库。

在“链接器”-》“输入”-》“附加依赖项”-》新增下面这些库
release 版本
qtmain.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib
//—————————————————————————
Qt5PlatformSupport.lib
qminimal.lib
qoffscreen.lib
qwindows.lib
qtfreetype.lib
qtharfbuzzng.lib
qtpcre.lib
imm32.lib
winmm.lib
opengl32.lib
ws2_32.lib

debug

qtmaind.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Widgetsd.lib
//—————————————————————————

Qt5PlatformSupportd.lib
qminimald.lib
qoffscreend.lib
qwindowsd.lib
qtfreetyped.lib
qtharfbuzzngd.lib
qtpcred.lib
imm32.lib
winmm.lib
opengl32.lib
ws2_32.lib

4 文件依赖

在项目中找到main.cpp这个文件,在开头插入下面的代码,即可导入平台扩展静态库的头文件

#include <QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)

如果是release版本,要在“代码生成”-》“运行库”,选择MT,debug为MTD

如果要兼容xp,平台工具集-》选择《v140_xp》
5 附加目录
首先,在“链接器”-》“常规”-》“附加库目录”-》添加《$(QTDIR)\plugins\platforms》这个目录,即平台扩展静态库

在C/C++->常规-》附加包含目录-》加入下面4个路径

$(QTDIR)\include\QtCore
$(QTDIR)\include\QtGui
$(QTDIR)\include\QtWidgets

$(QTDIR)\include\QtPlatformSupport

这样做完基本上就可以在windows上编译出来静态版本的Qt程序了, 只有一个exe不需要依赖一堆dll。 但是编译出来的文件也不小, 我使用x64版本的vs2015 debug版本编译出来20M release编译出来10M。。。。。 看来想要更下只能使用upx压缩一下了!

6.Qt Creator配置

如果是用QtCreator的话, 就比较简单了, 只需要添加一个版本,选项》构建套件和编译器里面添加一个配置, 然后在新建项目的时候选择我们安装的构建套件和编译器就行!

 

参考链接

http://blog.csdn.net/wyansai/article/details/51178631

http://blog.csdn.net/wsj18808050/article/details/50909381

网友评论:

  1. joen 说:

    //源代码编码必须是: UTF-8(BOM)
    #if _MSC_VER >= 1600
    #pragma execution_character_set(“utf-8”)
    #endif

发表评论


Verify Code   If you cannot see the CheckCode image,please refresh the page again!