QT程序在发布的时候应注意的地方

---恢复内容开始---

我们用QT开发好的应用程序,如果要发布到其他计算机上运行怎么办呢?我们在用VC编程时,单独运行编译好的可执行文件时,经常会发现提示缺少动态库。用QT编程也不例外,在一定程度上,编写好的QT程序会依赖一些动态链接库,包括MSVC运行库,已经QT自身的一些动态链接库。这是由于程序在编译时采用了动态链接的原因。如果我们在编译初期,就设置为静态编译,那么就不会出现这种情况了。动态链接机制是程序开发的一把双刃剑。

既然问题出现了,我们想着解决的办法。很自然的一种想法就是,程序需要链接什么动态库,我们就给它找出来放在一起。有些人可能会问:那我在用IDE开发的时候,无论是Debug还是Release版本,都可以完美运行,这是为什么呢?答案很简单,IDE在建立工程时,就会自动设置好当前工程的工作路径和环境变量。如在VS系列中,可以通过设置"VC++目录"来制定编译器搜索路径。搜索什么?这包括很多,如include,bin,src,lib等。程序在进行编译链接时,就会自动在这些路径下搜索需要的文件。当编译好的目标程序直接运行时,装载器会自动加载必要的系统动态链接库,但是基于特定环境的动态库在当前路径下如果不存在,那么它就不知道去哪里找了。于是程序加载失败。

在QT5环境下,要确定需要哪些动态链接库,可以用Process Explorer来查看。我开发的程序所以来的动态库如下:

这几个是比较基本的动态链接库,这是因为程序简单。如果开发的功能复杂,程序所以来的动态库将更多。但是只要用process explorer一一找出来即可。

---恢复内容结束---

时间: 2024-10-03 04:02:36

QT程序在发布的时候应注意的地方的相关文章

QT程序打包发布

本来感觉这是一个简单的操作,今天看见群里有人在问这个问题,他说网上查了很多都不成功,突然就想把自己初学的时候记录一下! 题目谢了QT程序的打包发布,那就是两步骤:打包+发布! 注释:这篇博文用的是Qt Widgets Application进行测试的,不是Qt Quick Application. 还有一点是,我现在装系统把QT卸载了,所以没有没有自己的图片,用的都是网上的,在这和各位大神道歉,跟着你们还抄袭你们东西~~哈哈 QT程序打包 这里打包用的是QT自带的WindePloyqt 首先我们

Qt静态编译发布和动态编译发布

静态编译发布 你写了一个小型Qt程序,发布的时候不想要一大堆dll文件,就只想打包成一个exe文件,那么就需要用到静态编译. 下面的教程就是Qt静态编译环境配置 Qt5.6静态编译包下载地址 1.下载Qt5.6静态编译包,解压放在任意目录. 这里我放在了Qt文件下的Tools目录 2.打开Qt Creator -> 工具 -> 选项.. 3.点击Qt Versions添加静态编译包bin目录下的qmake文件. 4.点击 构建和运行 -> 构建套件(kit) -> 添加  5.注意

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查

基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)

最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困难重重. 找了找关于manifest的介绍,貌似这个文件是用来描述程序或者库的依赖关系, 特别是对程序依赖的版本进行描述, 这样系统可以通过manifest的内容找到正确的库版本. 理论上讲这个dd确实是不错, 可以解决版本不兼容的问题, 保证程序运行的时候用的是指定版本的库. 不过实际操作起来麻烦

Qt 程序在 Windows 下的发布

本文讨论在 Windows 平台下编译成功的 Qt 程序,如何在未配置 Qt 开发环境的 Windows 平台下独立运行的方法. 经过验证发现,在 Ubuntu 平台下编译成功的程序可在未安装 Qt 开发环境下的 Ubuntu16.04 中运行,所以,本文仅讨论,在 Windows 平台下编译成功的 Qt 程序,在未配置 Qt 开发环境的 Windows 平台下独立运行的方法. 1. 编译模式选择 如若想要发布程序,在 IDE 中编译一定要选择 release 而不是 debug,编译成 rel

QT程序在windows下部署发布

转载: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 + mingw

解决Qt程序发布时中文乱码问题(通过QApplication.addLibraryPath加载QTextCodec插件)

Qt程序的文字编码,是通过插件来解决的,所以我们发布的时候需要把相应的插件也发布出去,在开发者电脑上程序会自动从插件目录加载到插件,但是如果发布给别的电脑使用,需要手动指定插件路径,如下所示: int main(int argc, char *argv[]) { QApplication a(argc, argv); QString strLibPath = a.applicationDirPath(); strLibPath += "/plugins"; //plugins就是插件目

Qt程序在Windows上发布

最近写好了一个Qt5的小程序,并且已经配置好了所有的依赖库,需要发布. 这个主要是讲发布的 查找依赖库请看我的另一篇博客 Qt的程序在其他电脑上使用 http://blog.csdn.net/homechao/article/details/9113531 因为所有的文件比较大约70M左右,直接复制比较慢,也容易丢失文件 在网上看了很多使用第三方的软件进行打包,倒也是可以使用就是比较麻烦点 其实Windows上都已经有现成的打包软件啦,大家可能天天用,都没想到吧 那就是RAR,用起来非常简单,我

解决Qt程序发布时中文乱码问题

Qt程序的文字编码,是通过插件来解决的,所以我们发布的时候需要把相应的插件也发布出去,在开发者电脑上程序会自动从插件目录加载到插件,但是如果发布给别的电脑使用,需要手动指定插件路径,如下所示: int main(int argc, char *argv[]) { QApplication a(argc, argv); QString strLibPath = a.applicationDirPath(); strLibPath += "/plugins"; //plugins就是插件目