C++ 手动执行exe时出现运行时错误

C++ 手动执行exe时出现运行时错误,c++,qt,qt5,visual-c++-runtime,C++,Qt,Qt5,Visual C++ Runtime,我有一个Qt应用程序,当我从QtCreator执行它时,它运行良好。但是,通过手动单击生成的exe来运行它时,会出现以下错误: 我会理解它是否会要求丢失DDL(然后我可以将其放在同一个文件夹中)。但我应该如何着手处理这个问题(总体而言) 另外,它没有在我的源代码中给出任何行号,我可以尝试测试这个断言。我也尝试过使用释放模式,但是同样的错误 我们不知道您的代码有什么问题;您将需要使用调试器来发现这一点。我认为您下载的预构建Qt库带有调试符号,但是如果它们没有,您可以使用-force debug

我有一个Qt应用程序,当我从QtCreator执行它时,它运行良好。但是,通过手动单击生成的exe来运行它时,会出现以下错误:

我会理解它是否会要求丢失DDL(然后我可以将其放在同一个文件夹中)。但我应该如何着手处理这个问题(总体而言)


另外,它没有在我的源代码中给出任何行号,我可以尝试测试这个断言。我也尝试过使用释放模式,但是同样的错误

我们不知道您的代码有什么问题;您将需要使用调试器来发现这一点。我认为您下载的预构建Qt库带有调试符号,但是如果它们没有,您可以使用
-force debug info
配置选项自行构建Qt来获取它们

您还可以使用查看已部署应用程序的调试输出

但是,一般来说,您应该使用Qt附带的工具


该页面提供了有关将Qt应用程序部署到Windows计算机的详细信息,但是
windeployqt
应该可以完成您需要的所有操作。

我的qml文件未正确部署,因此出现此错误(此断言可能位于存储主qml文件名的变量上,即它不应为空字符串,如果缺少main.qml,则为空字符串)。将qml文件放置在正确的路径上解决了此问题


此外,正如@mitch在他的回答中指出的,使用查找依赖项。尽管如此,我也意识到它并不涵盖所有依赖项(例如MSVC运行时和其他编译器相关文件)。在这种情况下,请运行dependency walker,并将丢失的文件与exe一起手动放置。

可能是Qt creator和exe目录之间的环境差异。需要更多有关环境配置的详细信息。最有可能的是,当您“手动”运行它时,您正在执行的操作失败您没有正确地处理该错误。请按照上面的说明操作:按“重试”进行调试。然后检查调用堆栈,并在“您的”中找到该行发生这种情况时正在执行的代码。您是否尝试过进入调试器?您最初将被放置在无权访问的DLL中,但您也将能够沿着函数调用堆栈进行遍历,并且您应该这样做,直到找到您的代码。我尝试过通过QtCreator在调试模式下运行它,并且它会运行abso非常好(无警告,无错误)。当手动单击“我得到此错误”并按“重试”、“忽略”、“中止”运行时,应用程序会关闭。我从您的答案中得到一个想法,它工作了,但我想添加更多内容,如果我添加一些内容并接受它,是否可以?您介意先简要解释一下您所做的事情吗?:)当然:)这就是我对它的想法——IsEmpty()断言可能是因为有些东西是“空的”/“缺少的”。因此,我尝试将qml文件放在与exe相同的文件夹中,它开始工作。显然,我的QML没有得到正确部署,因此出现了这个错误。不过,通过QtCreator运行它不会生成此错误。在这种情况下,您可能只需创建自己的答案并接受它即可。:)我认为windeployqt应该尽可能多地处理部署过程,如果它缺少一些东西,那么它可能是一个bug,在这种情况下,如果在这里报告问题就更好了:bugreports.qt.io。我看到很多人说他们必须手动完成某些部分,但我不认为他们会向开发人员提供反馈。