2011-11-18 29 views
1

在釋放模式編譯時,這個簡單的程序提供了錯誤,但在調試模式下編譯罰款:我的程序卻意外地完成了

#include <QApplication> 

int main(int argc, char* argv[]) 
{ 
    QApplication app(argc,argv); 

    return app.exec(); 
} 

ERROR(從Qt的控制檯輸出)

*啓動C: \ excercizes \ QT_projects \ Line_Counter-build-desktop-Qt_4_7_4_for_Desktop _-_ MinGW_4_4__Qt_SDK__Release \ release \ Line_Counter.exe ... 程序意外完成。 C:\ excercizes \ QT_projects \ Line_Counter - 構建 - 桌面Qt_4_7_4_for_Desktop _-_ MinGW_4_4__Qt_SDK__Release \發佈\ Line_Counter.exe與代碼退出-1073741511 *

任何人有過這種經歷?

+1

你確定它可以找到所有必需的DLL嗎?你也許可以使用像DependencyWalker這樣的東西來驗證這一點。 – Bart

回答

4

值-1073741511是0xC0000139十六進制,它是錯誤代碼STATUS_ENTRYPOINT_NOT_FOUND。這意味着某些DLL由EXE或另一個DLL加載,但它缺少EXE或其他DLL期望的函數。

Event Viewer可能會告訴你當錯誤發生時DLL缺少什麼功能。 Dependency Walker也會告訴你這個,以及整個DLL結構。

0

在大多數情況下,這是因爲可執行文件正在查找的必需.dll文件丟失。

最直接的方法是將以下文件從你的Qt安裝(如C:\Qt\Qt5.4.2\5.4\mingw491_32\bin)複製:

  • icudt53.dll
  • icuin53.dll
  • icuuc53.dll
  • 的libstdC++ - 6 .dll
  • Qt5Core.dll

...放入DEBUG和RELEASE配置的/ debug和/ release目錄中。