• 10859阅读
  • 6回复

[提问]XP下编译出的QT程序,不能直接在2003系统下发布? [复制链接]

上一主题 下一主题
离线hanxing30
 

只看楼主 倒序阅读 楼主  发表于: 2008-01-07
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2011-01-07) —
环境: vs2005
工具包:QT4.3(win-commercial)


编译出来的可执行程序,
按照Qt Reference Documentation中<Deploying an Application on Qt/Windows>,

1.发布到没有开发环境的XP系统的机器上,,可以正常运行.
2.发布到同样没有开发环境的2003系统(标准or企业)的机器上,不能正常运行,
跟踪错误时,发现找不到qtsql.dll和qtcore.dll.


问:
xp和2003上发布程序,部署上有什么区别吗?



附带 部署方法:
plugins目录
Microsoft.VC80.CRT.manifest
msvcm80.dll
msvcp80.dll
msvcr80.dll
qt.conf
QtCore4.dll
QtGui4.dll
QtSql4.dll
QtXml4.dll
可执行程序
离线hanxing30

只看该作者 1楼 发表于: 2008-01-08
这里没有人在win2003系统上发布过程序吗?
离线XChinux

只看该作者 2楼 发表于: 2008-01-08
我只在XP、Vista下试验过。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hanxing30

只看该作者 3楼 发表于: 2008-01-09
我在xp上用同样的部署发布,,程序正常运行.

复制到2003上,程序中定义的codec,sql对象就都为空了. 

2003系统装了两个版本了,,,QT重新安装编译了N遍,,自己的程序各种编译N遍,,各种修改QT部署.........

结果仍然未遂......真奇怪.
离线hanxing30

只看该作者 4楼 发表于: 2008-01-13
毛主席说得好:"自力更生.......!"

本人经过各种方法的测试,

发现这个问题应该与vs2005编译出的程序发布方法有直接关系.

在2003系统上已经有方法解决,,现在进行进一步的测试.

方法:
最先需要将开发机上位于<X:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86>(X为VS2005安装盘符)下的vcredist_x86.exe复制到客户机上,并且安装.(这是以x86平台为例)
离线ningzb

只看该作者 5楼 发表于: 2008-01-14
你直接将提示缺少的2个dll也拷贝到程序所在目录下应该就可以了吧!

以下仅供参考
如何在windows上发布Qt程序

在网上找到的,希望对像我一样的新手有所帮助
(未测试)

第一种,静态编译。
第二种,同时附上需要的dll文件。

静态编译

优点,发布简单,单一文件。
缺点,库文件很大,更新程序版本不方便。每次升级,都要重新分发所有的内容。
。。。。。
mingw平台静态编译,在编译Qt的时候,有个configure.exe程序,
configure.exe -static -platform win32-g++
可以产生静态编译项目文件。然后,
mingw32-make sub-src
就可以编译出静态库。如果只是用来分发程序,也可以mingw32-make release sub-src只编译一个静态库。

VC2005平台,在编译Qt的时候,configure.exe -static-platform win32-msvc2005
然后nmake sub-src或者nmake release sub-src完成静态编译。

再然后,就是把你的程序重新用静态编译的Qt再编译一次。
你会得到一个非常大的可执行程序。推荐使用AspPack压缩一下。就可以发给用户了。

附加Dll文件

优点,更新方便,发布多个产品时,可以统一使用一个库。
缺点,文件多、杂。
。。。

mingw编译程序运行时需要的几个dll文件
mingwm10.dll
QtCore4.dll
QtGui4.dll

VC2005编译程序运行时需要的几个dll文件
Microsoft.VC80.CRT.manifest 位于x:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\\Microsoft.VC80.CRT
msvcm80.dll
msvcp80.dll
msvcr80.dll
QtCore4.dll
QtGui4.dll

推荐一个很好用的工具,微软出的一个小工具Dependency Walker,也被微软集成到了它的VS里面。在
x:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\depends.exe
它可以检测出绝大多数的程序需要的dll库文件。这样,就不用手动去查找缺失的dll文件了。
另外,还有一些你程序附加的dll库文件,比如,sql.dll libpng.dll

下面,就可以发布你的程序了~
离线hanxing30

只看该作者 6楼 发表于: 2008-01-16
楼上的方法我在2003上都试过了,,也不好用.

我上网查过,,vs2005编译出来的程序,比较简单些的发布方法,就是安装个vcredist_x86.exe了.
快速回复
限100 字节
 
上一个 下一个