发布不运行。此应用程序无法启动

时间:2014-08-10 18:46:48

标签: qt dll

我的应用程序在调试模式下构建时有效。但它不会在发布中运行。

  

此应用程序无法启动,因为它无法找到或加载   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?类似。

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

- 以下是发布模式的Application Verifier结果。它不会发生在调试中。

=======================================
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

2 个答案:

答案 0 :(得分:2)

  

但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。这是必需的文件夹结构:

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

答案 1 :(得分:1)

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

a)使用发布版本可执行文件中的Dependency Walker来检查是否可以解析所有DLL依赖项。

b)确保您的平台插件文件位于正确的位置。我认为他们需要在一个名为"平台"的文件夹中。 (虽然不是很确定)。

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