vs2015qt静态编译
① 如何在VS2015中集成QT5.5
1. 首先,我们下载源码包,加压源码包到磁盘。
2. 由于编译QtWekbit需要ICU andANGLE 库,ICU库需要单独下载和编译,下载ICU4Cversion 56.1并解压到磁盘,目录位置参见随后说明。
3. 在Qt 5.5.1的源码包中还存在一个BUG,如果直接编译的话在编译QT3D模块的时候会报没有找到Zlib.h的错误而中断编译,所以参照如下提示修改qt-everywhere-opensource-src-5.5.1\qt3d\src\3rdparty\assimp目录下的assimp.pri文件。可参考地址codereview.qt-project.org/...mp.pri。
4. 在编译QT5.5.1之前还需要安装配置一下的工具和环境:
5. 经过上面的步骤可以开始进行编译ICU4C version 56.1和QT5.5.1的源码了
6. 如果以上的配置都正确的话开机让机器编译几个小时后就可以在目标路径下生成QT5.5.1的运行文件。
② 动态库 是什么
首先,想要知道动态库,我们得了解C++/C以及计算机的一些背景知识。
一般而言,在Windows下,*.dll文件就是动态库文件。用C++/C开发的程序,在发布的时候,会出现两种情况,第一,整个软件就只有一个文件,你只要双击那个exe文件,就可以运行。第二,除了exe之外,还有dll等文件。在这里,我们假设的文件只有exe文件和dll文件, 不讨论什么图标之类文件。
只有一个文件的,库已经嵌到那个exe里面。而有很多dll文件的程序,库没有嵌入到exe里面。所以,你可以看一下,如果那个exe文件大小非常大,那就说明是静态链接,在开发的时候是使用静态库。如果那个exe非常小,那么一般是使用的动态库。
那么问题来了,动态库与静态库相比优势又是什么。动态库节约内存,为什么这么说呢。假如两个类型的程序,如果他们都有一个共同使用的dll,那么在内存里面,只有一份,而不是两份。如果是使用了静态库,这会有两份,会有很大的浪费空间。
当然,使用动态库还有需要注意的地方。比如,有两个名字一模一样的动态库Qtcore4.dll,但是呢,一个dll是用vs2010编译器生成的,一个是用vs2015编译器生成的。如果,exe使用的dll弄错的话,程序结果会不对或者其他奇葩的问题。
以上均是一个大致的讲解,细节部分请参考程序员的自我修养这本书!
③ VS2015静态编译QT5.6,有人成功过吗
QT 5.5.1 VS2015 静态编译
编译参数如下:
configure -confirm-license -opensource -platform win32-msvc2015 -debug-and-release -static -prefix "c:\Qt\5.5.1-static-vs2015" -make libs -nomake tests -nomake examples
我的工程用到了这些库
qtpcred.lib
Ws2_32.lib
Qt5Cored.lib
qtharfbuzzngd.lib
opengl32.lib
Qt5Guid.lib
d3d9.lib
d3dx9.lib
ddraw.lib
D3D11.lib
dxguid.lib
Qt5Widgetsd.lib
Qt5WinExtrasd.lib
imm32.lib
qwindowsd.lib
winmm.lib
qtfreetyped.lib
Qt5PlatformSupportd.lib