转载:http://www.cnblogs.com/Fan_Fan/archive/2010/05/29/1746860.html
QT程序在windows下部署发布
以下包括了部分网上收集的,以及qt帮助里的内容(Deploying an Application on Qt/Windows)
首先,打开windows控制台,然后,找到vs安装目录下的bin里,执行 vcvars32.bat 这个脚本。执行完之后,vs需要的所有环境变量就已经设置好了。
我的环境是QT 4.3.3 + mingw32-make
部署发布QT程序有两种方法:
第一种,静态编译,可生成单一的可执行文件。
第二种,动态编译,需同时附上需要的dll文件。
第一种 静态编译
1 编译QT。
要静态编译,首先要求QT是静态编译过的。在QT目录下执行:
configure.exe -static -release
make sub-src
就可以编译出静态库。如果只是用来分发程序,也可以mingw32-make release sub-src只编译一个静态库。
这个过程需要1-2个小时。QT目录会变成1.8G左右。注:mingw32-make和make是一样的。
如果用VC2005平台,在编译Qt的时候,configure.exe -static -platform win32-msvc2005
然后nmake sub-src或者nmake release sub-src完成静态编译。
2 编译程序。
然后到你自己的程序目录下执行:
make clean
qmake -config release
make
这时会得到一个非常大的可执行程序,但也会有一个重要的问题,就是图片文件显示不出来。
按照QT帮助的说法,QT里的jpeg,gif等图片的支持都是以插件的形式存在的,现在我们还没有包含任何插件。
在main.cpp里:
#include
#include //这个
Q_IMPORT_PLUGIN(qjpeg) //这个
Q_IMPORT_PLUGIN(qgif) //这个
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
…
return app.exec();
}
在.pro里加入:
QTPLUGIN += qjpeg qgif
CONFIG += static
QT的帮助里就做到这里,但我编译程序时出错如下:
release/main.o(.text+0×1c9):main.cpp:
undefined reference to `qt_plugin_instance_qgif()’
undefined reference to `qt_plugin_instance_qjpeg()’
4 加入LIBS
在.pro中加入:
LIBS += C:/Qt/4.3.3/plugins/imageformats/libqgif.a
LIBS += C:/Qt/4.3.3/plugins/imageformats/libqjpeg.a
如果QT静态编译正确的话,你应该上面这个目录下看到这两个文件libqgif.a和libqjpeg.a (据说以前的QT版本也可能是.lib或.o文件)
5 解决MinGW的mingwm10.dll依赖问题
LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -static -Wl,-s -Wl -mthreads -Wl, -subsystem,windows
quote:
一般只有用到threads的时候才用到mingwm10.dll,我们通常遇到的”缺少mingwm10.dll”问题,可以在程序qmake生成makefile.release文件后删除”-mthreads”参数即可,一般在 “LFLAGS”后面。当然,这只是临时解决方案,每次都要手动修改,也可以在编译QT前先修改qmake.h,不过不推荐这种方法。其实, mingwm10.dll也就十多K,每次发布程序时一起打包也无所谓。
这时编译同样得到一个非常大的可执行程序(我写的这个贪吃蛇一共500多行,生成的exe有8M)。用AspPack压缩一下。就可以发给用户了(这时是2.6M)。
quote: “这样编译出来的程序比较大,可以先用strip命令去掉程序里面一些无用信息后,用ASPack或者UPX之类的压缩加壳软件压缩一下,两者的压缩率基本都达到30%多一点,压缩效果还是很明显的。”
第二种:动态编译就很容易了。
用QT的默认安装,把生成的release下的exe文件,和下面几个核心文件放在一个文件夹里:
MINGWM10.DLL
QTGUI4.DLL
QTCORE4.DLL
VC2005编译程序运行时需要的几个dll文件
Microsoft.VC80.CRT.manifest 位于x:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\\Microsoft.VC80.CRT
msvcm80.dll
msvcp80.dll
msvcr80.dll
QtCore4.dll
QtGui4.dll
这样就可以运行了。但图片文件还是可能显示不出来,解决办法:
把程序文件夹里,建立一个imageformats目录(必须是这个名字),把qt目录下的plugin/imageformats目录下对应的dll文件copy过去。这样动态连接就完成了。
发布中文Qt程序时要注意的问题:
用Qt写好了程序,并撰写了中文的语言文件(.qm文件) 后,发布到没有安装过Qt的系统上时,却发现只有固定的界面文字中的中文能正常显示,而程序运行过程中保存到诸如txt、xml文件中的中文却变成了奇怪的编码,而读回时就会变成“?”。
解决方法很简单,有多种方法:
1)将以上的中文编码库文件安装到可执行程序的目录下的 codecs 目录下,程序启动时,QtCore中的初始化过程会自动找到该目录并加载到内存中。
2)在Qt程序启动时,用代码指定Qt的Library搜索路径。
3)编写qt.config文件,放在可执行文件的目录下,并在其中定义Codecs的路径。
4)对于用static编译的Qt,在主程序文件中写上这句宏指令:Q_IMPORT_PLUGIN(qcncodecs),并在Link中加入相应的LIB文件。
具体内容我不多说了,看Qt文档吧: doc/html/plugins-howto.html
分享到:
相关推荐
适用于WindowsCE平台的QtSDK的测试及Qt程序在WinCE平台下的部署与测试
现(20181020)Qt已升级到5.11,基本不会在有基于Qt3的新开发,但可能仍有老旧程序需要维护。包中有Qt3.3.4版windows商业版安装程序和许可证。安装时使用许可证会提示已经过期,不能获得Trolltech[狗头]的更新和支持...
简介2.windows下的打包1)发布环境2)方法一 — release版本发布a) release要发布程序b) 通过`windeployqt`打包3)方法二 — 发布成独立的可执行exe文件a) 下载工具b) 打包4)方法三 — 打包成安装包发布a)通过...
在Windows下使用QT开发了一个程序,部署的时候发现比较困难,使用了很多dll文件,也不知道从哪里找。VC2005,VC2008等也一样。 花了几个小时做了这么一个简单的工具,能够将在开发机器上运行时候所需要的DLL收集起来...
用Qt实现的Windows平台远程控制软件,包含源代码和编译后可以运行的程序,服务器端(被控端)为进程形式,客户端(主控端)为图形界面程序。客户端在连接时要设置服务器端的ip地址以及要显示的长度和宽度(不能超过...
您可以在自己喜欢的桌面平台(如Windows、Linux和macOS)上使用Qt Creator,并使用相同的代码库或稍加修改,创建流畅、现代、触摸友好的图形用户界面(GUI)和桌面、移动或嵌入式应用程序。您可以轻松地修改代码并将其...
Qt 是跨平台应用程序和 UI 框架,可用来编写应用程序,无须重新编写源代码,便可 跨不同的桌面和嵌入式操作系统进行部署。使用Qt开发出来的软件,已经在各行各业中得 到了越来越广泛的应用。本书内容基于最新发布的...
赢得在Windows上部署Qt应用程序的胜利。 这是一个很小的命令行实用程序,它使用为Windows构建的Qt应用程序可执行文件,并生成一个目录,该目录具有在其他计算机上运行该可执行文件所需的一组完整的依赖项。 它...
平台:Windows,Qt是跨平台的其他平台应该也是没问题的。 IDE:QtCreator Qt版本要求:5.10 及以上版本 开发该项目使用的Qt版本:5.15.2,其他版本可能会出现二进制资源文件(xxx.rcc)无法加载的问题。 不要使用 Qt...
Crossdeploy:此应用程序支持Windows和Linux发行版,这意味着您不仅可以使用它为平台部署项目,还可以在Linux上为Windows部署项目,反之亦然。 快速创建安装程序:部署完成后,您将收到发行版的独立安装程序。 支持...
平台:Windows,Qt是跨平台的其他平台应该也是没问题的。 IDE:QtCreator Qt版本要求:5.10 及以上版本 开发该项目使用的Qt版本:5.15.2,其他版本可能会出现二进制资源文件(xxx.rcc)无法加载的问题。 不要使用 Qt...
课程讲解基于QT5.9 SDK,包含QT界面编程的核心内容,并提供全部源码,课程讲解方式是接口讲解、分析、演示示例,课程讲解QTCreator在不同平台的配置方法,linux,windows,mac,课程演示主要以vs2015+QT5.9为主,...
您可以自己在Windows,Mac或Linux上运行每个示例。 您只需要Python3。有关说明,请参见下文。 你好,世界! 常见的PyQt小部件布局信号和插槽Qt Designer和Python QML Python示例Qt文本编辑器打包和部署Qt Dark Theme...
通过调⽤⽹络IP地址查询获取当前位置城市,调⽤和⻛天⽓城市搜索API获取该城市的ID,根据ID调⽤和⻛实时天⽓API获取该城市天⽓...系统:Windows10,理论上可以部署到任何Qt支持的平台上。 推荐使用Linux系统或者Unix系统
分别介绍Qt的编程环境、窗体应用、控件应用、组件应用、文件操作、图形图像操作、多媒体应用、对系统操作、对注册表操作、数据库应用,网络应用开发、进程与线程应用、数据的加密与解密以及Qt程序打包部署;...
由于QtCreator在Windows中的Debug速度很慢,基本都在Release中进行开发,故将在Windows中部署单独使用脚本处理:C:\Qt\Qt5.7.0\5.7\msvc2013\bin\windeployqt.exe -qmldir C:\Qt\Qt5.7.0\5.7\msvc2013\qml QDzh3.exe...
Pty-Qt是一个小型库,用于在Mac,Linux和Windows上通过伪终端接口访问控制台应用程序。 在Mac和Linux上,您可以使用标准的PseudoTerminal API;在Windows上,您可以使用WinPty或ConPty。 CI状态 Ubuntu / MacOS X: ...
这里顺便提一下,在Qt里面我们并没有Controller的概念,而是Delegate(委托),意义很明显:控制器委托模型来处理数据,模型委托控制器来做数据的交互。 这样的框架好处是很明显的: - 高重用性:一个模型可以有多...
特征它下载或编译以下内容:7-Zip,MinGW,SDL,SSL,cURL,Qt5 它创建并注册在Windows中编译驱动程序所需的凭据。 它管理编译中的依赖项。 它编译VirtualBox二进制文件。要求Windows 10 Python(≥3.8) 足够的空间...
此外,MySQL支持多种操作系统,包括Windows、Linux、macOS、Solaris等,确保了其在不同环境下的兼容性和部署灵活性。 关系型模型与SQL支持 MySQL基于关系型数据库模型,数据以表格形式组织,并通过预定义的键(如...