Cannot run Qt Creator GUI outside of Qt. "The application was unable to start correctly (0xc000007b)" error

0

I downloaded C++ code from GitHub to tag images for training an object detector using Machine Learning.

Within Qt Creator 4.2.1 Based on Qt 5.8.0 (MSVC 2015, 32bit), I was able to compile and run the code. Unfortunately, I was not able to run the .exe outside of Qt Creator.

Initially, I received an error that

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

Thanks to QT The program can't start because libgcc_s_dw2-1.dll is missing, that was fixed easily by adding

"QMAKE_LFLAGS += -static" 

to the .pro file. Now, when I run it I get

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

I was able to reproduce the error using the simple "Hello World" default project that appears when you create a Qt Widget Application. This led me to believe something was wrong with my installation.

Based on the advice of this article: https://stackoverflow.com/questions/12099117/32-bit-qt-application-on-win-7-x64-wont-run-but-runs-fine-from-qt-creator, I used Dependency Walker to identify possible causes. I expected to see only a few items that I can follow up on. Instead, I received a list of close to 100 missing .dll files. All the files started with

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

where ### represent some additional text characters, for example;

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

I'm attaching a sample output.

Screen Capture of Dependency Walkder

Another suggestion was to copy over

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

That did not work either.

My next move was to simply get the latest version of QT and wish for the best. I installed Qt Creator 4.8.1 Based on At 5.12.0 (MSVC 2015, 32 bit). This time, I could not even get the code to run in the IDE. I received 1000+ error messages!

Based on advice from several pages, I added

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

to the .pro file and it still would not compile.

Also, I verified that the application is being built as a 32bit application. I'm running on a 64 bit Windows 10 system.

If anyone would like to take a crack at it to see if they can create a working .exe, here is the link: github.com/clavicule/BBTag

c++
qt
compiler-errors
asked on Stack Overflow Feb 25, 2019 by Adrian Hood Sr • edited Feb 27, 2019 by Adrian Hood Sr

2 Answers

2

Qt provides a tool to copy the necessary dlls to the folder of your executable.

The tools is called windeployqt.exe and comes with your Qt installation. For me it is located at C:\Qt\5.9.1\msvc2015_64\bin\windeployqt.exe. You will have to look at your installation path and probably the msvc_32 folder to find it.

Then you go to the folder with your executable in it, oben a command prompt or powershell and execute path\to\windeployqt.exe yourProgram.exe and it will automatically copy the necessary dll files to this folder. Afterwards you can run your program without issues.

The official documentation for the tool can be found here.

Alternative 1: While developing you could use QtCreator which automatically adds the paths to the dlls when running your program - make sure to include them if you deploy your program!

Alternative 2: Add the path to the necessary dlls to your PATH variable. This isn't recommended either, since everyone who gets your program would have to do the same to run it.

answered on Stack Overflow Feb 25, 2019 by AlbertM
1

I figured it out! My installation of Anaconda (a Python distribution popular for data science and machine learning) is the culprit.

From: @remy-lebeau

The application was unable to start correctly (0xc000007b)

The error:

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

is a good indicator that the 32-bit app tried to load a 64-bit DLL. At first, this did not make sense since I verified many times that I was using the 32 bit version of Qt.

It turns out that the installation of the 64 bit version of Anaconda also contained many Qt5 dlls used for the PyQt5 package. Since the path to this folder came before the path to my c:\Qt...\bin folder, it was used in the build instead of the actual 32 bit version installed with Qt. This was not obvious because I was unaware of PyQt5 so I had no idea that it came with Anaconda. A simple reordering of the path entries using the System Environment Variables interface AND a system restart fixed the problem.

Silver lining: I now know C++ and designing GUIs w/ QT and PyQt5

Thanks @albertmand and @jwernerny

answered on Stack Overflow Feb 27, 2019 by Adrian Hood Sr • edited Feb 27, 2019 by Adrian Hood Sr

User contributions licensed under CC BY-SA 3.0