我在尝试部署使用Qt构建的新应用程序时遇到了严重问题。从Qt Creator(所有版本:debug,profile,release)启动时程序运行正常,但是当双击.exe启动时它会崩溃。弹出错误对话框,显示以下消息:
?defaultTypeFor @ QTimer @@ CA?AW4TimerType @ Qt @@ H @ Z无法找到 在动态链接库中 C:\ Users \用户SDT1 \文件\扫描器\ Scanner_deploy \ Scanner.exe
我正在使用Qt 5.8.0,我正在用MSVC2015_64位构建项目。我正在使用来自
的windeployqt.exeC:\ Qt的\ 5.8 \ msvc2015_64 \ BIN
以动态链接Qt库。
自从我从旧的connect
语法(带有宏SIGNAL
和SLOT
)转移到带有函数指针的新语法后,这个问题就开始发生了。我也开始使用QTimer::singleShot
代替QMetaObject::invokeMethod
,并且错误涉及QTimer
也就不足为奇了。但是,该程序在Qt Creator中工作正常,我无法弄清问题所在,因为我使用windeployqt来获得正确的dll。
另外,为什么我的.exe被称为" dinamic链接库"在错误消息中?它是一个.exe!
答案 0 :(得分:0)
好的我解决了这个问题,但我还是不确定出了什么问题:我的Path变量指向了Qt 5.7版的文件夹(我唯一的其他版本)。我将其更改为5.8,重新启动并重新部署,并且DIDN&T; T工作。然后,我删除了构建文件夹,重建并重新部署,并且DID工作。所以,问题在于构建。
我不知道这是怎么发生的。我将路径更改回Qt 5.7并重新启动以进行一些测试。问题再次出现,但我不明白Path如何影响构建。尽管在路径中有Qt 5.7,但在Qt Creator中,编译输出显示指向5.8文件夹的所有Qt内容(qmake.exe,uic.exe,包含文件夹,......)。没有引用5.7版。只有jom.exe不在Qt 5.8文件夹中,因为它位于Qt Creator文件夹中。也许它通过查看路径从Qt 5.7加载一些东西?谁知道......