• 7453阅读
  • 6回复

有关QML静态发布 [复制链接]

上一主题 下一主题
离线foolifish
 

只看楼主 倒序阅读 楼主  发表于: 2014-12-18
这两天 搞Qt 发布问题,,搞的我好惨。。。
刚莫名其妙的 搞定 Qt 静态编译的问题,,在程序发布的时候 发现自己的程序到别人机子能跑  但是一片白!!!
程序用qtquick写的,目测里面的qml加载失败。。。
但是本机能跑啊!这我就晕了 ,,,我几乎删除了path里面的所有的环境变量,但是本机的程序就是能跑。。当然copy到别人机器上还是不能跑。。
我用depends on查看了本机静态编译过的QT程序的所有DLL发现基本都只依赖系统dll了。。。就想不通自己的机器和别人的WINDOWS有什么差别。。
后来网上找啊找啊。。。PS网上有关QT的资料真的是少啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊。。。
找到这样一篇帖子: http://bbs.csdn.net/topics/390706852
我操 难道我自己的exe依赖了静态编译包里面的qml?我尝试了一下,删除了我本机静态编译包里面的整个qml文件夹,,果然我的QT exe和别人机子一都只有exe框,而一片白了。。。。然后我在自己程序里加了整个qml文件夹。。。猜测用 qtcreate 生成EXE的时候 他将一些qml要用到的.o文件地址包了进去。。而不是文件。。。。而由于是静态编译的,我是查不到她的dll的,关键是跑起来的时候还不报错!!!!!!
现在有个问题,,,在静态编译下,,我如何能查到我大EXE文件所有要依赖的  二进制文件呢?(那些.o是二进制文件吧!?)
关键是他不报错啊。。。QT 资源真少。。。百度搜索 没谷歌给力。。。网上二流博客好多。。
离线cycloneii

只看该作者 1楼 发表于: 2014-12-18
我来抛砖引玉吧
1)可能是你没有正确设置Qt的dll和插件目录,你可以用qt.conf文件指定,具体设置请参考网页说明http://qt-project.org/doc/qt-4.8/qt-conf.html
2)Qt的插件是动态加载的,特别是qml插件,你可以查看以下是不是你的qml插件依赖的dll不存在。你应该知道用到了那些Qt插件,比如codecs、imageformat、qt quick组件等等,用depency工具查看以下这些dll的依赖关系
3)如果还有问题,那么还有一个可能就是opengl驱动的问题,qml程序要求有opengl硬件加速的GPU
离线realfan

只看该作者 2楼 发表于: 2014-12-18
把qml放到资源文件中,就能打包到exe中了
离线foolifish

只看该作者 3楼 发表于: 2014-12-19
不 我当时正是用了depency却没查到依赖。。。
离线foolifish

只看该作者 4楼 发表于: 2014-12-19
我后来又遇到一个问题
我加了QML那个包后 在别人WIN7的机子上能跑了
但是 WIN8却不行!说计算机丢失MSVCR120.DLL
我本机是WIN7的用的QT是mingw32-g++
这又是什么原因呢?
离线foolifish

只看该作者 5楼 发表于: 2014-12-19
回 cycloneii 的帖子
cycloneii:我来抛砖引玉吧
1)可能是你没有正确设置Qt的dll和插件目录,你可以用qt.conf文件指定,具体设置请参考网页说明http://qt-project.org/doc/qt-4.8/qt-conf.html
2)Qt的插件是动态加载的,特别是qml插件,你可以查看以下是不是你的qml插件依赖的dll不存在。你应该知道用到了那些Qt .. (2014-12-18 13:05) 

这次 我是用的静态编译啊。
depency里面出了系统DLL 没有看到其他要的DLL。。。
在线toby520

只看该作者 6楼 发表于: 2015-07-17
QML程序即使是静态编译也要附带上qml文件夹下相关文件,如QtMultimedia,QtQuick,QtQuick.2等文件夹,发布之前,可把里面的库文件删除,只保留.qml,.qmltypes等类型文件
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
快速回复
限100 字节
 
上一个 下一个