Application compilée dans mingw-w64 / msys2, “l’application n’a pas pu démarrer correctement (0xc00007b”)

Après avoir compilé une application dans le mingw-w64 64-bit Shell , elle s’exécute the application was unable to start correctly (0xc00007b) dans le shell, mais the application was unable to start correctly (0xc00007b) une erreur: the application was unable to start correctly (0xc00007b) lorsqu’elle est exécutée normalement, en dehors du shell.

J’ai déplacé certaines des DLL nécessaires des répertoires bin de msys2 / mingw-w64 quand il se plaignait de les manquer, mais maintenant cela donne cette erreur opaque. Qu’est-ce que je fais mal?

Erreur 0xc00007b signifie fondamentalement “format d’image non valide” qui se produit généralement lors du mélange de DLL 64 bits et 32 ​​bits. Ce qui se passe, c’est que vous avez une application 64 bits, à la recherche d’une DLL particulière, qui se trouve dans le chemin global, mais celle du chemin est 32 bits. Par conséquent, le problème est le suivant: il ne se plaint pas de la DLL manquante, il essaie simplement de le charger. Comme il s’agit d’une application 32 bits et que votre application est une application 64 bits, vous obtenez l’erreur 0xc00007b .

La solution consiste à copier toutes les DLL dépendantes sur le chemin de l’application.

Le problème suivant est que vous ne savez pas lesquels.

Ce que vous pouvez faire avec le shell msys2 est: allez dans le répertoire et exécutez la commande:

 ldd application.exe 

Cela vous donnera une liste de DLL dont l’application dépend. Copiez les DLL associées à msys2 / mingw-w64 dans le répertoire. Cela permettra à l’application de les trouver avant de chercher dans le PATH et de trouver les DLL 32 bits.