记录一次Qt5程序无法运行的解决过程

上几天在V站逛的时候看到某作者出了个截图工具(snipaste)很是强大.

可下载后就是打不开, 工具是Qt5写的, 提示我无法加载qwindows.dll, 这个dll明确在platforms目录里放着的.

谷歌一通后发现Qt的社区有个帖子也是这样, 那人用Dependency Walker列出了程序加载的dll, 而且其中一个dll路径明显是本机某个特殊路径.

我在想是不是因为我安装了Qt的SDK的原因.经过Dependency Walker查看, 果然是.

本来该加载应用程序目录下的qwindows.dll, 结果加载到我的SDK里去了, 因为SDK是用VS2013编译的, 而这个截图工具是VS2015编译的, 可能DLL之间不兼容所以才加载失败.

为什么会加载到我的SDK里去呢, 因为我在系统的环境变量里设置了一个QT_PLUGIN_PATH这样的变量, Qt在加载时就优先加载我这个环境变量指定的路径了.

我把环境变量改名后工具就正常运行起来了.

下面截图都是这个工具截的, 很强大.

 

 

那怎样才能避免这种情况发生呢?

以下是猜测并没有实际验证, 请测试后再使用. 哪天有空测试了, 再来修改这篇文章.

查看Qt5的文档(http://doc.qt.io/qt-5/qcoreapplication.html#addLibraryPath)发现有下面这个方法:

void QCoreApplication::addLibraryPath(const QString &path);

在程序的main方法里面一开始先调用一下这个方法, 将程序当前目录或者程序当前目录下的plugins目录加进去应该就会优先读取了.

之前Qt4的插件都是部署在plugins目录里, 现在Qt5.7不知道怎么部署了, 看情况是直接部署在程序根目录下, 不用非挪到plugins目录里.

 

转载于:https://www.cnblogs.com/Athrob/p/5786100.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值