0xc000007b while deploying C++ application link w/ Qt 5.3

513 Views Asked by At

I'm developing a C++ application that dynamically link against Qt, boost and Assimp. I compiled it in Release mode with /MD and it works fine on my computer. However, if I try to run it on another machine I get the 0xc000007b error (The application was unable to start correctly). I use Windows 8.1 on both machines but Qt5.3 and VisualStudio2013 are only installed on the 1st machine.

I built boost with

bootstrap.bat
b2 variant=release

I then used Cmake GUI to configure/generate a solution for Assimp that I later built using Visual Studio 2013. Qt (32-bit version) was installed via the online installer. So everything (including my application) is built with a target 32-bit.

The folder that I copy to the other machine includes:

  • MyApp.exe
  • platform/
  • accessible/
  • assimp.dll
  • icudt52.dll
  • icuint52.dll
  • icuuc52.dll
  • kernel32.dll
  • opengl32.dll
  • libEGL.dll (cannot be found in Qt/5.3/msvc2012_opengl/)
  • libGLESv2.dll (same)
  • msvcp1XX.dll
  • msvcr1XX.dll
  • The Qt libs that I need (Core, GUI, Widgets, OpenGL)

If I copy these .dll/folders from Qt/5.3/msvc2012_opengl/, the app requires msvcp110.dll to start. If I add it and run it, I get the 0xc000007b error. But why msvcp110.dll instead of msvcp120.dll???

And if I copy the files from Qt/tools/QtCreator the app actually needs msvcp120.dll to run. But when it runs, it crashes at the beginning with:

QEGLplatformContext::init: eglError: 3005, this: 0x2e806b0

Which I guess is normal as you're not supposed to copy them from this location.

Does anyone know what I am doing wrong?

PS: I also ran vcredist_x86.exe on the machine without VS2013 before running my app. It installed successfully but nothing changed.

Thanks for your time and your help!

0

There are 0 best solutions below