找回密码
 立即注册
收起左侧

Qt5.4 发布程序

3
回复
6328
查看
[复制链接]

尚未签到

来源: 2015-2-10 18:41:09 显示全部楼层 |阅读模式
因为几年没有用Qt做开发,现在突然用Qt写个浏览器,然后就想到用qt,然后用Qt5.4 + vs2013 开发,写了一个QWebEngine的demo,然后对其进行发布,在我的机器上是可以正常运行,并且用Process Exploer查看了程序的加载路径,并且用Dependency Walker查看了依赖库。默认情况下程序加载Plugin是从我的安装目录下加载,为了程序发布,我在代码中设置了加载文件路径:
  1. QTextCodec *xcodec = QTextCodec::codecForLocale() ;
  2.     QString exeDir = xcodec->toUnicode( QByteArray(argv[0]) ) ;
  3.     QString BKE_CURRENT_DIR = QFileInfo(exeDir).path() ;
  4.     QStringList  libpath;
  5.     libpath << BKE_CURRENT_DIR+QString::fromLocal8Bit("/plugins/platforms");
  6.     libpath << BKE_CURRENT_DIR <<BKE_CURRENT_DIR+QString::fromLocal8Bit("/plugins/imageformats");
  7.     libpath << BKE_CURRENT_DIR+QString::fromLocal8Bit("/plugins");
  8.     libpath << QApplication::libraryPaths();
  9.     QApplication::setLibraryPaths(libpath) ;
  10. QApplication a(argc, argv);
复制代码
然后用Process Exploer发现加载的plugins路径是我设置的路径。但是我把它放到没有安装qt的机器上运行时,却不能显示界面,也没有报错。我打印了一些日志,发现在:
Widget w;w.show();show的时候进程就退出了,就是程序运行没有报错,但是显示的时候就退出了。我按照网上说的方法都试了,都木有用。我的程序目录为:
把安装目录下的plugins目录下的所有的插件(platfroms等)都拷贝到exe所在目录,程序还是那样,然后把整个plugins放在目录下也不能。然后写了一个不带插件Demo的程序,放到没有安装Qt的程序中可以正常运行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:1570 天
连续签到:1 天
2015-2-11 11:23:32 显示全部楼层
把程序发上来。
回复 支持 反对

使用道具 举报

尚未签到

2015-3-5 10:53:45 显示全部楼层
现在已经解决了,但是有个问题,就是Qt5中使用QWebEngine中,会启动一个QtWebEngineProcess,然而这个程序在系统安装目录(C:\Qt\Qt5.4.0\5.4\msvc2013_64\bin)。我打包程序时需要放到其他机器上相同的目录下,才可以启动程序。有没有什么办法让该进程和我所在的程序一起发布
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-6-12 18:04:19 显示全部楼层
请问这个问题是怎么解决的呢,我也遇到这个问题,麻烦帮忙解答下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了