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