QT部署和发布程序的方式网上有很多资料了(静态编译和动态编译),我在这里就不阐述了。
现在碰到的情况时:
在本机调试和运行程序都没有问题,但是将程序和QT动态库发布到其他机器上(其他机器没有QTSDK开发环境),就 会报如下的错误: AppName: trainshuntingmonitor.exe AppVer: 0.0.0.0 ModName: qtsql4.dll |
这个问题困扰我很久了,我能猜到这个是由于QT程序用到了QT外的plugins插件导致的问题,但是使用网上的方法,将plugins下面的
插件文件夹拷贝到应用程序文件夹中,还是会报这个错误。所以我怀疑是由于QTCreator编译的时候在exe写入了QTSDK环境中的一些信息。
我的QT4.6SDK安装目录是 D:/Qt/qt46中
我用的是非常蠢的办法:
就是修改Qt46中的文件夹名字,然后再查看我的程序能否运行就知道程序是否依赖于这个文件夹。
不断尝试下终于定位到这个文件夹D:/Qt/Qt46/qt/plugins/sqldrivers1 (和猜的一样,是QT4.6的插件库导致的)
我只要将这个文件夹改名,我的程序就会报错,如果不改名,程序就运行正常。
那我猜想可能如果我将这个文件夹按照这个地址拷贝到其他的机器上,就能解决程序发布的错误!
按照这个思路,我将发布的QT程序和这个插件文件夹(地址不变)一起拷贝到其他机器上,解决此问题!
我写这么多只是想提供一个方法临时解决这个问题!(如果有朋友遇到了同样的问题而苦思不解的时候应该非常难受:))
具体的原因:也可能是QT4本身的Bug(猜想) 。
如果有知道详细原因的朋友,可以发email到 13836281@qq.com,谢谢!