【问题标题】:Release does not run. This application failed to start发布不运行。此应用程序无法启动
【发布时间】:2014-08-10 18:46:47
【问题描述】:

我的应用程序在调试模式下运行。但它不会在发行版中运行。

此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“windows”。

重新安装应用程序可能会解决此问题。

我复制了应用程序所需的 dll。我还复制了 qwindows.dll、qoffscreen.dll 和 libEGL.dll。

但 libEGL.dll 位于 C:\qt\5.3\msvc2013\bin 和 `C:Qt\ToolsQtCreator\bin'。我通过 msvc-11.0(2012) 编译了我的应用程序。

--

我将平台文件夹放到 exe 目录,现在应用程序运行但在 ntdll.dll 中立即崩溃!771e56bc()

现在我的问题与Why is ntdll.dll crashing my c++ executable?类似。

我可以让调试像发布一样工作但保存调试模式吗?

-- 这是发布模式的应用程序验证器结果。调试时不会发生。

=======================================
VERIFIER STOP 00000006: pid 0xDF0: Corrupted heap pointer or using wrong heap. 

    00161000 : Heap handle used in the call.
    093F8FF8 : Heap block involved in the operation.
    00000004 : Size of the heap block.
    06441000 : Heap where block was originally allocated.


=======================================
This verifier stop is not continuable. Process will be terminated 
when you use the `go' debugger command.

=======================================

MyApp.exe has triggered a breakpoint.

AVRF: Noncontinuable verifier stop 00000006 encountered. Terminating process ... 
The thread 0x1724 has exited with code -1073740767 (0xc0000421).
The program '[3568] MyApp.exe' has exited with code -1073740767 (0xc0000421).

--

这是调用堆栈的顶部

vrfcore.dll!6ae43466()  Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for vrfcore.dll]   
[External Code] 
qwindows.dll!0f0642cb() Unknown
qwindows.dll!0f065f8a() Unknown
qwindows.dll!0f0662bb() Unknown
Qt5Gui.dll!0f774cf3()   Unknown
Qt5Gui.dll!0f774e75()   Unknown
Qt5Gui.dll!0f7778d5()   Unknown

【问题讨论】:

  • 您确定您的发布版本与 Visual Studio 的发布运行时链接吗?听起来有点像相关 DLL 的混合调试/发布配置。

标签: qt dll


【解决方案1】:

但 libEGL.dll 位于 C:\qt\5.3\msvc2013\bin 和 `C:Qt\ToolsQtCreator\bin'

不得C:\Qt\Tools\QtCreator\ 获取任何 DLL——这些是 Qt Creator 的私有 DLL,它们与您的应用程序不兼容。

仅从 C:\Qt\5.3\msvc2013\binC:\Qt\5.3\msvc2013\plugins 获取 DLL。这是所需的文件夹结构:

(来源:http://qt-project.org/wiki/Deploy_an_Application_on_Windows

【讨论】:

    【解决方案2】:

    这听起来像是缺少 DLL,或者应用程序希望它位于不同的路径中。

    a) 在您的发布构建可执行文件上使用 Dependency Walker 检查是否所有 DLL 依赖项都可以解析。

    b) 确保您的平台插件文件位于正确的位置。我认为它们需要位于一个名为“platforms”的文件夹中(虽然不确定)。

    c) 有一个关于类似问题的post in the Qt 论坛。也许这可以帮助您追踪它。

    【讨论】:

    • a) 打开文件时出错。系统找不到指定的文件:API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL, API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL, API-MS- WIN-CORE-WINRT-L1-1-0.DLL、API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL、API-MS-WIN-CORE-WINRT-STRING-L1-1- 0.DLL、API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL、DCOMP.DLL、IESHIMS.DLL。
    • c) 这对我没有帮助。
    • Dependeny 可能会发出有关延迟加载文件的警告,您可以忽略这些警告。检查 Qt 相关的 DLL(例如平台的)。这些是否显示错误?
    • 你在谈论这个http://pastebin.com/Vn7mXLuN吗?
    • 不,这些只是缺少 PDB 文件,这对于应用程序启动并不重要。顺便说一句:如果我的回答有助于追踪最初的情况(似乎是这种情况),如果你能支持它会很好。
    猜你喜欢
    • 2022-06-16
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2018-11-17
    相关资源
    最近更新 更多