Отсутствует libgcc_s_dw2-1.dll

У меня есть Windows 7 64-битная система с последней установленной MinGW (32-битной) вместе с Qt 5.5 SDK (опять же 32-битной), который также поставляется с собственным MinGW. Из-за того, что я не единственный, кто использует систему, я не могу удалить автономный MinGW.

Мой проект использует qmake и является простым C-проектом (не C++). Все прекрасно работает, но когда я пытаюсь выполнить мой двоичный файл в командной строке, я получаю, что приложение не удалось запустить из-за отсутствия libgcc_s_dw2-1.dll в системе.

Изучив проблему, я обнаружил, что как автономный MinGW, так и тот, который поставляется вместе с Qt SDK, имеют упомянутую DLL.

  • Автономный MinGW - libgcc_s_dw2-1.dll находится внутри bin подкаталог установки MinGW, в которой находятся двоичные файлы (gcc, g++, gdb так далее.)
  • Qt MinGW - libgcc_s_dw2-1.dll находится внутри C:\Qt\Tools\mingw492_32\i686-w64-mingw32\lib подкаталог, в то время как двоичные файлы компонентов MinGW находятся внутри C:\Qt\Tools\mingw492_32\i686-w64-mingw32\bin,

Я хотел бы знать, как правильно настроить мой PATH переменная так, что:

  • Приложение запускается правильно
  • Никаких конфликтов с автономной установкой MinGW не происходит

Просто примечание: я уже проверил другие посты здесь на SO, но не смог найти решение (возможно, я пропустил его). Я также пытался LIBS += -static но результат тот же.

1 ответ

Вам просто нужно скопировать эту DLL с вашим исполняемым файлом, то есть:

cp <path-to-qt-install-dir>\qt5.7.0\5.7\mingw53_32\bin\libgcc_s_dw2-1.dll <path-to-dest-dir>

Вы можете обнаружить, что у вас есть другие зависимости, чтобы увидеть, какие другие ваши депозиты вы можете использовать: ldd <your-executable>, Вам нужно только скопировать dll, специфичные для qt, вы можете увидеть их:

ldd <executable> | grep -i qt

нота

Вы можете статически связать его с помощью следующих команд: -static-libgcc или же -static, но я думаю, что вы начинаете сталкиваться с проблемами LGPL, а также вам может понадобиться статически скомпилировать qt из исходного кода - не могу вспомнить для этого конкретного файла.

заметка 2

Извините, ldd для Linux, только что понял, что у вас есть окна, и в этом случае вы можете использовать один или оба из:

  • ходок зависимости: отсюда

  • <path-to-qt-bin-folder>\windeployqt.exe <path-to-your-executable>

Я смешал результаты с windeployqt, но если у вас есть какие-либо плагины, это хорошо для сортировки этой части.

Другие вопросы по тегам