标题:难道QT就没有办法脱离运行环境了吗?真是快对它丧失信心了
作者:坤义
日期:2006-04-17 10:25
内容:
前段时间开始学习QT,就是冲着它所谓的跨平台,这些天刚完成一个小程序,想拿到别的机子上试试,可这时才发现一个致命的问题,QT基本上不能脱离它所运行的环境,要想在别的机子上运行,必须在那台机子上安装QT才行,真是要命,这几天试了静态编译,仍然是问题一大堆,程序根本没办法在别的机子上运行起来,要么说是找不到DLL,把DLL拷过去后程序运行却一点动静也没有,要么就是lfongConfig出错,有人说静态编译很多功能就不能用了,QT就跟废物一样了,真是对QT越来越失望了,难道我一开始就选择就错了?唉,我的这几个月的努力打水漂了
#1 [XChinux 04-17 10:37]
为什么不可以?我只使用动态编译制作的程序放到别的机器上也能用,把你需要的动态库带上就行,甚至为安全可以用ldd看一下用到的所有动态库,全带上。
请看我的项目下的子目录搭配:
bin // 可执行目录
|-exefile // 二进制可执行文件,一般不可直接执行此文件
|-exefile_run.sh // 启动脚本,用于设置运行环境
lib // 动态库目录
|-libQtCore.so
|-libQtCore.so.4
|-libQtCore.so.4.1
|-libQtCore.so.4.1.1
|-libQtGui.so
|-libQtGui.so.4
|-libQtGui.so.4.1
|-libQtGui.so.4.1.1
|-libotherexefilelib.so
再看启动脚本文件内容:
#!/bin/bash
exedir=`dirname $0`
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$exedir/../lib
export LD_LIBRARY_PATH
$exedir/exefile &
#2 [坤义 04-17 12:22]
我试过的不行啊,我是在WINDOWS2003SERVER下试的
#3 [XChinux 04-17 12:47]
Windows下更简单了,把所有需要的DLL拷贝到可执行文件目录下就行了,连启动脚本也不用。
我给别人做的QT程序就是把需要的QtGui, QtCore, QtNetwork等必须的DLL以及mingw10.dll拷贝到他的机器上就能用(XP)
#4 [坤义 04-17 13:59]
我最开始就是这样试的,不行,不过XP下没试过,因为我是在WINDOWS2003SERVER环境下做的程序,所以我想最好是找个同样平台的机器。把它所依赖的所有DLL都拷过去了都不行,我不知道在我的机子上运行环境与别的机子的运行环境到底区别在哪里,应该不仅仅是这些DLL的原因吧,请版主指点
#5 [坤义 04-17 14:08]
是事件日志里可以看到
错误应用程序 ZHJB.exe,版本 0.0.0.0,错误模块 QtCore4.dll,版本 4.1.2.0,错误地址 0x0011af48。