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

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

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

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏idealclover的填坑日常

phpstorm 与服务器保持更新

说起来自己也已经折腾这个网站折腾了几个月了,但是每次更改都要从服务器上把网站文件拽下来,编辑,再放回去(是在是用不惯linux上的vim...配置成本太高......

2421
来自专栏娱乐心理测试

微信小程序发送模版消息(事例)

4097
来自专栏北京马哥教育

马哥金牌分享 | 十五分钟实现Ansible常用模块入门

本文是马哥教育特约金牌讲师、Linux运维专家魏巍的分享《Anisble常用模块入门指南》的文字整理篇。 朋友们晚上好: 今天我为大家带来的分享是 Ansibl...

3965
来自专栏较真的前端

[译] 调试 RxJS 第2部分: 日志篇

1794
来自专栏DeveWork

通过多说服务器缓存加速Gravatar 头像,解决被墙问题

由于大中华局域网的关系,Gravatar 头像所在的域名gravatar.com 及其二级域常常被墙,就算没有被墙,访问速度也非常慢。之前曾经分享过通过《Wor...

22910
来自专栏数据和云

5分钟速成Oracle 12.2 RAC 专家(附ppt下载)

Oracle 12c 在RAC方面提出了很多新的解决方案和特性。这些方案和特性使得Oracle 集群在云和大数据的时代环境下,帮助企业用户上云更具优势。今天我们...

3925
来自专栏web开发

初识NodeJS

1.JavaScript 模块化规范 浏览器环境 AMD Asynchronous Module Definition RequireJS CMD Com...

47810
来自专栏linux系统运维

linux任务计划, chkconfig工具,systemd管理服务, unit介绍,target介绍

1895
来自专栏Python中文社区

开车啦!小爬虫抓取今日头条街拍美女图

專 欄 ❈追梦人物,电子科技大学计算机学院研究生,从事大数据分析研究方向。主要使用 Python 语言进行相关数据的分析,熟练使用 django 开发网站系统...

3515
来自专栏微信小程序开发

如何使用vue开发一个登录注册组件

本文作者:端,映客的一位前端开发。 要开发某个功能我们就要去思考这个功能怎样实现最快捷最方便,下面以项目中的登录注册组件为例说明 一个功能要尽可能的去拆分比如这...

4308

扫码关注云+社区