• 6241阅读
  • 8回复

如何打包? [复制链接]

上一主题 下一主题
离线yongjie
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-17
在win7下用Qt写了一个小程序,编译,调试成功。但如果在开发环境外使用,则报告找不到DLL。(mingwm10.dll)。

怎样才能在开发环境之外运行为WINDOWS编的Qt程序呢?

更一般地,如何将编译好的Qt程序打包成setup.exe,使得其它人可以安装在自己的机器上。

谢谢!
离线0xffffh

只看该作者 1楼 发表于: 2011-11-17
去下载一个Depends工具(VC6.0)自带,用它打开你的exe文件将Qt和Gcc带的全部所需动态库和你的exe一起拷到目标机。打包的话可以用InnoSetup,写个打包脚本就可以了,具体的google一下!
离线quser
只看该作者 2楼 发表于: 2011-11-18
笨一点的方法就是 直接运行程序,缺少dll会提示,少哪个就在qt lib中查找,放到可执行文件的当前目录下即可
离线shaoshuai898

只看该作者 3楼 发表于: 2011-11-18
可以到网上搜 有专门的打包程序 形成setup.exe
离线yongjie

只看该作者 4楼 发表于: 2011-11-23
谢谢各位。depends.exe找到了, 可以列出用到的库,不过要自己提供路径。也装了一个vs2008,里面好象有一个打包的功能,得慢慢试一试。

我试了一下静态连接,一直不成功。我用的是
LIBS+=-Xlinker -Bstatic -v

由于用了-v,所以ld(实际上collect2.exe)用到了这一个-Bstatic,但在开头,先有一个-Bdynamic,
好象前面那一个dynamic起作用了。如果在UNIX上,可以写一个shell script,强制用-Bstatic, 或者将静态库一个个列在那里,我想就可以。但在WINDOWS上,不太熟悉呀!
离线yongjie

只看该作者 5楼 发表于: 2011-11-24
离线yongjie

只看该作者 6楼 发表于: 2011-11-24
用NSIS可以安装了,就是Qt太大了。呵呵。

上一帖中的NSIS例子中,所有的\都写成了/, Windows上还是要用反斜杠的!

用了ICON,但安装后,显示的却是缺省的。不安装时,显示是正常的。哪位知道为什么?
离线yongjie

只看该作者 7楼 发表于: 2011-11-30
分享一下我的问题与看法。

(1)缺的文件主要有Qt4Core.dll, Qt4Gui.dll, mingw10.dll, libgcc_s_dw2-1.dll. 我装的是QtSDK。mingw10.dll, libgcc_s_dw2-1.dll 是从QTSDK目录下拷的,Qt4Core.dll, Qt4Gui.dll则是从Desktop(也在QTSDK下)拷的。打包用的是NSIS。
(2)在本机上(WIN7 ),将这些DLL找齐了之后,一切正常,可以运行。
(3)拷到XP机上,不能运行。用depends.exe来查,报告缺msjava.dll。升级到XP service pack 3,仍然不能运行。depends报告缺IESHIMS.DLL,MER.DLL。
(4)在XP机上装QtSDK,奇迹发生了。程序可以运行了!但是运行depends仍然报告IESHIMS.DLL,MER.DLL缺。

我的看法:
(1)QtSDK开发的WINDOWS程序是模拟运行的。依赖于什么库我尚不知道。QtSDK做开发环境很好用,但是做发布不行!可能要自己从头编译Qt库,再来编译自己的程序发布才行。
(2)depends看着提供了很多信息,但并不完全管用。
(3)NSIS还是好用的。如果要用自己的ICON,则在开始菜单和桌面都要指定ICO文件。

希望众位高手指正。
离线yongjie

只看该作者 8楼 发表于: 2011-12-05
总算成功了。原来问题是插件造成的。以下是我的看法。
(1)QtSDK做开发环境很好用,做发布也行。
(2)NSIS可以用来做打包。
(3)如果用到了plugin,则要将用到的库包括进来。至于怎么知道用了哪个插件,则要看经验了。depends帮不了你。可以自己看一下插件目录。
(4)还有qt.conf,也是一定要的。不过内容可以为空,只要加个[paths]一行即可。

谢谢各位。我的这个小程序是用来看unicode的,在LINUX上只有50K。但WINDOWS上有5M。有兴趣可以看一下。



描述:uv-install.zip
附件: uv-installer.zip (5360 K) 下载次数:14
快速回复
限100 字节
 
上一个 下一个