Qt应用程序无法在Qt Creator中执行

3
我正在开发一个跨平台的Qt音频应用程序。在Linux上,应用程序可以正常运行,但在Windows上,当从Qt Creator启动时,应用程序无法执行。
在Release配置(或没有调试)下运行时,Qt Creator只会显示:“程序意外终止”。
如果使用Debug配置(或调试),Qt Creator会显示:“在启动过程中,程序退出并显示代码0x0000135。”
由于搜索错误并没有帮助,我决定将应用程序所需的每个.exe和.dll文件(包括QtCore等必要的Qt库)复制到一个空目录中,然后应用程序就像在Linux下一样完美地执行了。
因此,我猜测这是Windows无法找到应用程序需要的dll文件的问题。
这个问题出现在上周末,当时我将系统升级到Windows 8。以前(使用Windows 7)我没有遇到这个问题。
有人知道不涉及修改构建参数(存储在文件.user中)的解决方案吗?
我不想这样做,因为当我在Linux下测试应用程序时,这个文件将失效,而且我不想保留两个版本。

尝试卸载Creator和Qt,然后进行全新安装,以便在Windows 8更新混乱时重新应用所有设置。 - Nikos C.
刚试过了,还是同样的错误。 - Vinícius Gobbo A. de Oliveira
3个回答

2

问题已解决!

可能是Qt Creator中的一个bug。

我的项目有4个子项目:main.exe、core.dll、side.dll和external.dll。

main.exe needs core.dll and side.dll
core.dll needs external.dll

由于main.exe仅需要核心库core.dll和辅助库side.dll,因此我没有向external.dll添加引用。Qt Creator应该足够聪明,能够检测到其依赖项并相应地添加它们(好吧,在Linux下至少会这样发生)。

由于它不能正确检测依赖项,当我尝试从Qt Creator运行main.exe时,它不会正确构建PATH环境变量,从而导致问题。

通过在我的main.pro文件中添加以下行解决了这个问题:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../external/release/ -lexternal
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../external/debug/ -lexternal

#INCLUDEPATH += $$PWD/../external
win32: DEPENDPATH += $$PWD/../external

注意:我更改了模块名称以便更好地理解。

1
我猜这是因为执行环境中的路径不再包含Qt-DLLs的路径。请前往项目设置并检查“调试和执行”设置中的PATH变量。 例如,在我的情况下: C:\QtSDK\mingw\bin;C:\QtSDK\Desktop\Qt\4.8.1\mingw\lib;...其他路径... 此致。

已经检查过了。路径没问题。如果我不将Qt dlls复制到“空目录”中,应用程序就可以执行。 - Vinícius Gobbo A. de Oliveira

0
问题肯定是由于缺少某些 DLL 文件!我已经发现,当我将 DLL 直接放在可执行文件所在的文件夹中(例如 png3.dll),然后从 Qt Creator 运行它,它就会运行!
我的做法是:在你的输出目录(即可执行文件所在的目录)中打开可执行文件(双击),Windows 将显示缺失的 DLL 文件名。你找到它们并直接复制到文件夹中。然后通过 Qt Creator 运行应用程序!如果 DLL 文件合适,那么你应该会成功运行。之后,你可以尝试从 exec 文件夹中移除 DLL 文件,并通过 Qt Creator 运行应用程序,直到出现错误为止。这样你就可以找到缺失的 DLL 文件了。然后,你需要在 Qt Creator 的“项目”设置中的“构建环境”中将 DLL 文件的路径添加到“Path”变量中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接