3

我正在开发一个跨平台的 Qt 音频应用程序。在 Linux 上,应用程序运行没有任何问题,但在 Windows 上,从 Qt Creator 启动时应用程序不会执行。

当使用 Release 配置运行(或没有调试)时,Qt Creator 简单地说:

“节目意外结束了。”

如果我使用 Debug 配置(或调试)运行,Qt Creator 会说:

“在启动时程序退出,代码为 0x0000135。”

由于谷歌搜索错误根本没有帮助,我决定将我的应用程序所需的每个 .exe 和 .dll(需要的 Qt 库 - 包括 QtCore - )复制到一个空目录,并且应用程序完美执行,就像在 Linux 下一样。

所以,我猜这是 Windows 没有找到我的应用程序所需的 dll 的问题。

上周末我将系统升级到 Windows 8 时出现了这个问题。以前(使用 Windows 7)我没有这样的问题。

有谁知道不涉及修改构建参数(存储在 .user 文件中)的解决方案?

我不想这样做,因为当我在 Linux 下测试应用程序时,该文件将失效,并且我不想保留它的版本。

4

3 回答 3

2

刚刚解决了!

可能是 Qt Creator 中的一个错误。

我的项目里面有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

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

于 2012-11-25T20:25:52.820 回答
1

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

问候。

于 2012-11-24T22:53:46.730 回答
0

问题肯定是缺少一些dll!我发现当我将 dll 直接放入带有可执行文件的文件夹(例如 png3.dll)中,然后从 qt creator 运行它时,它会运行!我做了什么:在您的输出目录(可执行文件所在的位置)中,您打开可执行文件(双击),Windows 显示缺少的 dll 名称。您找到它们并直接复制到文件夹中。然后从 Qt creator 运行应用程序!如果 dll 合适,您应该会成功。之后,您尝试从 exec 文件夹中删除 dll 并通过 qt creator 运行应用程序,直到它再次引发错误。这样你就可以找到丢失的 dll。之后,将“构建环境”中的 qt creator“项目”设置中的 dll 路径添加到“路径”变量中。

于 2018-01-25T16:11:06.947 回答