Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281466
  • 博文数量: 59
  • 博客积分: 1346
  • 博客等级: 中尉
  • 技术积分: 461
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-06 17:17
文章分类

全部博文(59)

文章存档

2012年(9)

2011年(50)

分类: C/C++

2011-08-19 08:16:57

完全了解逻辑层次os/compiler/framework/application中静态链接、动态链接情况的,请绕道。
linux以及Xnux的大牛,也不用看了。

要想Qt应用做出来只是一个exe就能给客户运行,
有两个情况,搞定即可:

一、mingwm10.dll,libgcc_s_dw2-1.dll依赖

这与qt无关
用vc编译的就不存在……依赖这俩玩意的情况。

那么mingw版下的QT呢?
下载,静态版mingw(mingw本身和gcc都是static version)即可,见文末资源。

二、QtCoreX.dll QtXXX.dll等依赖

指定你的应用本身为静态编译即可。
1、project.pro添加QMAKE_LFLAGS=-static,
2、qt本身是静态版编译的,步骤见文末资源。
以上俩条件都需要,虽然qt静态版的,不用满足1即可,但是
逻辑上工程层次得指定,否则假设你是开源的,
别的兄弟拿过去编译,可能有些入行不久的会问为什么他的编译出来的不是一个文件了,呵呵。
而且你保不定自己就一直只有一套qt在跑,我就是静态动态版的都在用。

资源
--------------------------------------------------------------------------------

1、mingw静态编译版本:
有牛人 已经做好了,

这个,下载覆盖$QTDIR/../mingw就行,实在不信任我的,覆盖前先备份,就没风险了。

mingw和gcc编译是件不简单的事,
至少我觉得比qt编译复杂,特别是mingw的那一堆工具和补丁,
编译器和编译原理一直是心中的痛啊,啊啊啊。

2、qt静态编译步骤,这里有(注意评论,有更实用的做法提出来):
http://blog.csdn.net/MicroSky2813/archive/2010/02/01/5278096.aspx

p.s

至于第三种情况,msvcrt.dll 貌似winnt都带着吧,不用管。
kener32.dll?介个……

然后就是LGPL涉及静态链接版权问题

我个人比较认同“涉及LGPL库的开源,没涉及的可以不开,后者调用前者的部分提供obj”说法。
那么,Qt应用,用wrapper策略吧:
http://devbean.blog.51cto.com/448512/313477

好吧,聪明人会问,编译环境依赖,如mingw10.dll和libgcc_s_dw2-1.dll我看你怎么wrapper?
就已有资料看,这俩已经public domain了。

再啰嗦两句,release之前,用upx把你的exe压缩一下,尺寸更小,而debug版……就别了。

最后,希望受dll依赖问题烦扰的,能明白本文第一句。

第一步:按照1、mingw静态编译版本:
 

Windows下安装完Qt4.5.2后,运行桌面上的Qt Creator,编译并运行程序,没有错误信息,程序可以运行。但当进入去此文件下的debug或者release文件目录,双击生成的.exe文件,就会出现:

问题一:

没有找到QtCore.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题!

原因在于:装完Qt4.5.2之后,系统的环境变量没有进行设置。比如Qt4.5.2安装到了D:\Qt\2009.03文件夹下。那么设置系统环境变量方法为:右击“我的电脑”-“属性”-“高级”-“环境变量”,在下面的系统变量中,找到path,点击“编辑”,在后面添加:D:\Qt\2009.03\qt\bin;;确定之后。然后在去双击刚才的.exe文件,这时 就可以运行了!

问题二:

无法定位程序输入点_Z5qFreePv于动态链接库QtCore4.dll上

解决方法也是上面的步骤。要看清楚你的Qt安装路径!在设置坏境变量时注意每个路径间隔中的分号“;”

第二步:添加环境变量

经过这两步就能实现了 Qt中使用图标  

1. 程序中部件使用资源文件
  a. 为工程新建Qt Resource file
  b. 打开资源文件,新建profix,比如取名为"images"
  c. Add files: 添加你的图片文件
  d. 在程序中要使用的地方用如下方式使用:
 ":/images/qq.ico"  (注意:前面有个冒号“:”,不要忘记哦) 

2. 为可执行程序添加图标:(参考帮助文档中的<>)
  a. 找一个图表文件放在工程目录, 如"qq.ico"
  b. 在工程目录下添加一个*.rc文件,如"myproject.rc"
  c. 在myproject.rc文件中添加如下内容:
        IDI_ICON1 ICON    DISCARDABLE "qq.ico"
  d. 在qt的工程文件(*.pro文件)中添加如下内容:
      RC_FILE = myproject.rc

Qt4.7编辑添加环境变量

D:/Qt/2010.04/qt/bin;D:/Qt/2010.04/mingw/bin

阅读(2916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~