2017-05-30 98 views
0

我在尝试部署使用Qt构建的新应用程序时遇到了严重的麻烦。当从Qt Creator启动时(所有版本:调试,配置文件,发行版),程序运行良好,但双击.exe启动时会崩溃。一个错误对话框弹出以下消息:不可能部署Qt应用程序

defaultTypeFor @ QTimer @@ CA AW4TimerType @ Qt的@@^h @ Z无法在动态链接库位于 C:?\用户\ SDT1 \ Documents \ Scanner \ Scanner_deploy \ Scanner.exe

我使用的是Qt 5.8.0,我正在用MSVC2015_64位构建项目。我使用windeployqt.exe从

C:\ Qt的\ 5.8 \ msvc2015_64 \ BIN

到dinamically链接Qt库。

自从我从旧的connect语法(使用宏SIGNALSLOT)移至具有函数指针的新语法后,此问题开始发生。我也开始使用QTimer::singleShot而不是QMetaObject::invokeMethod,并不意外的是错误涉及到QTimer。然而,这个程序在Qt Creator内运行得很好,我无法弄清楚问题所在,因为我使用windeployqt来获取正确的dll。

此外,为什么我的.exe在错误消息中被称为“dinamic链接库”?这是一个.exe!

回答

0

好的我解决了这个问题,但我仍然不确定发生了什么问题:我的路径变量指向Qt版本5.7(唯一的其他版本)的文件夹。我将它更改为5.8,重新启动并重新部署,但它不起作用。然后,我删除了构建文件夹,重建并重新部署,并且它工作。所以,这个问题与构建。

我不知道这会如何发生。我改回了Qt 5.7的路径并重新启动以进行一些测试。问题再次出现,但我不明白路径如何影响构建。尽管Path中有Qt 5.7,但在Qt Creator中,编译输出显示了指向5.8文件夹(qmake.exe,uic.exe,包含文件夹,...)的所有Qt文件。没有提到版本5.7。只有jom.exe不在Qt 5.8文件夹中,因为它位于Qt Creator文件夹中。也许这是从Qt 5.7加载的东西,通过查看路径?谁知道......