Приложение скомпилировано в mingw-w64/msys2, "приложение не может запуститься правильно (0xc00007b")
После составления заявки в mingw-w64 64-bit Shell
, он прекрасно работает внутри оболочки, но выдает ошибку the application was unable to start correctly (0xc00007b)
когда работает нормально, вне оболочки.
Я переместил некоторые необходимые библиотеки DLL из каталогов msys2/mingw-w64, когда он пожаловался на их отсутствие, но теперь выдает эту непрозрачную ошибку. Что я делаю неправильно?
1 ответ
Ошибка 0xc00007b
в основном означает "неверный формат изображения", что обычно происходит при смешивании 64-битных и 32-битных DLL. Происходит следующее: у вас есть 64-разрядное приложение, которое ищет определенную библиотеку DLL, которая находится в глобальном пути, но та, которая находится в пути, является 32-разрядной. Поэтому проблема в том, что он не жалуется на отсутствующую DLL, он просто пытается загрузить ее. Поскольку это 32-битное приложение, а ваше приложение - 64-битное, вы получаете ошибку 0xc00007b
,
Решение состоит в том, чтобы скопировать все зависимые библиотеки DLL в путь приложения.
Следующая проблема в том, что вы не знаете, какие именно.
Что вы можете сделать с оболочкой msys2: перейдите в каталог и выполните команду:
ldd application.exe
Это даст вам список библиотек DLL, от которых зависит приложение. Скопируйте библиотеки DLL, связанные с msys2/mingw-w64, в каталог. Это позволит приложению найти их, прежде чем искать в PATH и находить 32-битные библиотеки DLL.