Недавно перешел с MinGW на MinGW-w64. Все установил, поставил все пути в ide Code::block. Делаю тестовую программу Hello World, компилирую - на экране пустота. Захожу в папку, где лежит бинарник проекта. Запускаю, и вин 10 выдает - Невозможно запустить это приложение на вашем ПК. Как быть? Уже голову сломал.
Ответ
Если бинарник появился, значит компиляция прошла успешно и проблема в запуске вашего приложения.
Проблема запуска приложения может быть связана с отсутствием зависимых библиотек в папке с бинарником или в PATH или ещё из-за кучи причин.
Чтобы просмотреть, от каких библиотек зависит ваш exe, можно воспользоваться специальной утилитой Dependency Walker или Lister плагином для TotalCommander:
Как видно из скриншота, программа скомпилирована с зависимостью от runtime библиотеки MinGW libgcc_s_dw2-1.dll и месторасположение этой библиотеки неизвестно (на самом деле, она лежит в папке \mingw-w64\mingw32\bin\).
Чтобы решить эту проблему, надо либо добавить в PATH путь к зависимой библиотеке, либо положить её рядом с exe (и все библиотеки, от которых она зависит), либо при компиляции проекта указать, чтобы она линковалась статически (конкретно, для статической линковки libgcc_s_dw2-1.dll нужно в настройках проекта добавить флаг линковщику: -static-libgcc).
Upd: Как выяснилось из комментариев, была попытка запустить 64-х битный бинарник на 32-х битной системе. Отсюда следует вывод, что нужно внимательно смотреть, под какую платформу вы собираете своё приложение. У готового бинарника, так же можно выяснить, какой он разрядности (32/64 бит). Информация об этом находится в PE заголовках и есть программы, для просмотра этих заголовков (например, PE Explorer или тот же Lister плагин для TC):
Комментариев нет:
Отправить комментарий