簡體   English   中英

無法在Qt外部運行Qt Creator GUI。 “應用程序無法正確啟動(0xc000007b)”錯誤

[英]Cannot run Qt Creator GUI outside of Qt. “The application was unable to start correctly (0xc000007b)” error

我從GitHub下載了C ++代碼來標記圖像,以便使用機器學習訓練對象檢測器。

在基於Qt 5.8.0(MSVC 2015,32位)的Qt Creator 4.2.1中,我能夠編譯並運行代碼。 不幸的是,我無法在Qt Creator外部運行.exe。

最初,我收到一個錯誤

"The program can't start because libgcc_s_dw2-1.dll is missing". 

謝謝 QT該程序無法啟動,因為缺少libgcc_s_dw2-1.dll ,可以通過添加輕松地解決該問題

"QMAKE_LFLAGS += -static" 

到.pro文件。 現在,當我運行它時,我得到

"The application was unable to start correctly (0xc000007b). Click OK to close the application."  

我可以使用創建Qt Widget應用程序時出現的簡單“ Hello World”默認項目來重現該錯誤。 這使我相信我的安裝有問題。

基於本文的建議: https://stackoverflow.com/questions/12099117/32-bit-qt-application-on-win-7-x64-wont-run-but-runs-fine-from-qt-creator : https://stackoverflow.com/questions/12099117/32-bit-qt-application-on-win-7-x64-wont-run-but-runs-fine-from-qt-creator ,我使用Dependency Walker來確定可能的原因。 我希望只看到一些可以跟進的項目。 相反,我收到了近100個丟失的.dll文件的列表。 所有文件都以

"API-MS-WIN ###.DLL" or "EXT-MS ###.DLL" 

例如,其中###代表一些其他文本字符;

"API-MS-WIN-SHCORE-STREAM-WINRT-L1-1-0.DLL" 

我正在附上示例輸出。

依賴行者的屏幕截圖

另一個建議是復制

libwinpthread-1.dll, libstdc++-6.dll, libgcc_s_dw2-1.dll.   

那也不起作用。

我的下一步是簡單地獲取最新版本的QT,並希望獲得最好的。 我安裝了基於At 5.12.0(MSVC 2015,32位)的Qt Creator 4.8.1。 這次,我什至無法獲得在IDE中運行的代碼。 我收到1000多個錯誤消息!

根據幾頁的建議,我添加了

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

到.pro文件,仍然無法編譯。

另外,我還驗證了該應用程序正在構建為32位應用程序。 我在64位Windows 10系統上運行。

如果有人想破解一下是否可以創建可以運行的.exe,請訪問以下鏈接:github.com/clavicule/BBTag

Qt提供了一種工具,可以將必要的dll復制到可執行文件的文件夾中。

這些工具稱為windeployqt.exe,並且隨Qt一起安裝。 對我來說,它位於C:\\Qt\\5.9.1\\msvc2015_64\\bin\\windeployqt.exe 您必須查看安裝路徑,可能還需要查看msvc_32文件夾才能找到它。

然后,轉到其中包含可執行文件的文件夾,執行命令提示符或powershell並執行path\\to\\windeployqt.exe yourProgram.exe ,它將自動將必要的dll文件復制到此文件夾。 之后,您可以毫無問題地運行程序。

該工具的官方文檔可在此處找到。

替代方法1:在開發過程中,您可以使用QtCreator在運行程序時自動將路徑添加到dll中-如果部署程序,請確保包含這些路徑!

替代方法2:將必要dll的路徑添加到PATH變量。 也不推薦這樣做,因為每個獲取您程序的人都必須做同樣的事情才能運行它。

我想到了! 罪魁禍首是我安裝的Anaconda(一種流行於數據科學和機器學習的Python發行版)。

來自:@ remy-lebeau

應用程序無法正確啟動(0xc000007b)

錯誤:

"The application was unable to start correctly (0xc000007b) ..." 

可以很好地表明32位應用程序試圖加載64位DLL。 最初,這沒有任何意義,因為我多次驗證我正在使用32位版本的Qt。

事實證明,Anaconda的64位版本的安裝還包含許多用於PyQt5軟件包的Qt5 dll。 由於此文件夾的路徑位於我的c:\\ Qt ... \\ bin文件夾的路徑之前,因此它在構建中使用,而不是隨Qt安裝的實際32位版本。 這並不明顯,因為我沒有意識到PyQt5,所以我不知道它與Anaconda一起提供。 使用“系統環境變量”接口對路徑條目進行簡單的重新排序並重新啟動系統即可解決此問題。

一線希望:我現在知道C ++和設計帶有QT和PyQt5的GUI

謝謝@albertmand和@jwernerny

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM