Я создал простую программу на C ++ с Code :: Blocks.
Если я запускаю его из Code :: Blocks, он работает правильно; но если я запускаю его двойным щелчком по исполняемому файлу, появляется окно с таким сообщением:
Программа не может запуститься, потому что libgcc_s_dw2-1.dll отсутствует на вашем компьютере.
Попробуйте переустановить программу, чтобы решить эту проблему.
Так в чем проблема? Что мне нужно сделать, чтобы это исправить?
В Eclipse вы найдете его в свойствах проекта> Сборка C / C ++> Настройки> MinGW C ++ Linker> Разное
Вы должны добавить его в «флаги компоновщика» вверху; нигде более. Тогда просто восстановите.
Я обнаружил, что связывание этих статически взрывает размер до 1400 КБ даже с оптимизацией. Это на 277 КБ больше по сравнению с простым копированием общих библиотек DLL. Это также на 388 КБ больше после UPXing. Очень потерять / проиграть здесь. Просто включите библиотеки DLL, так как конечный пользователь может решить удалить их или нет, если они установлены в другом месте.
источник
Code :: Blocks: добавить '-static' в настройках-> компилятор-> настройки компоновщика-> другие опции компоновщика.
источник
Найдите эту dll на вашем ПК и скопируйте ее в тот же каталог, в котором находится ваш исполняемый файл.
источник
См также . Это решило мою проблему.
Кстати, это определенно
compiler
флаг? Может быть,linker
это более подходящий термин здесь?источник
Нужно скопировать файл libgcc_s_dw2-1.dll в файл make.exe. (Если вы используете Msys, скопируйте его в \ msys \ bin) Убедитесь, что путь к make.exe задан в env. PATH (если make.exe находится в папке «bin», скорее всего, и у вас есть msys, это \ msys \ bin) Компиляция, запуск, отладка и т. Д. Счастливы.
источник
Перейдите к дереву MinGW http sourceforge.net. В папке Home / MinGW / Base / gcc / Version4 (или любой другой версии, которую вы используете) / gcc-4 (версия) / вы найдете файл типа gcc-core-4.8.1-4-mingw32-dll.tar.lzma , Извлеките его и перейдите в папку bin, где вы найдете свой libgcc_s_dw2-1.dll и другие библиотеки DLL. Скопируйте и вставьте то, что вам нужно, в каталог bin.
источник
Я смог преодолеть это с помощью «gcc» вместо «g ++» для моего компилятора. Я знаю, что это не вариант для большинства людей, но подумал, что я бы упомянул об этом как обойти :)
источник
Разве вы не можете поместить его в system32 или что-то вроде того, что делаете с другими dll-файлами, чтобы каждая программа, которую вы пытаетесь запустить, не имела такой проблемы на вашем компьютере?
Мне просто нужен путь, где его поставить.
Довольно неприятно помещать его в каталог каждый раз, когда я запускаю только что созданную программу ...
Изменить: я нашел решение:
источник
Просто зайдите в «Настройки» >> «Компилятор и отладчик», затем перейдите на вкладку «Настройки компоновщика» и перейдите к элементу «Редактировать другие параметры компоновщика» и вставьте в него «-static-libgcc -static-libstdc ++», здесь нет опции флага компилятора в параметрах флагов компилятора для Code :: Blocks, так что это способ решения этой проблемы, я пришел сюда в поисках решения, и один парень, который писал о "-static-libgcc -static-libstdc ++" дал правильную идею, и Я как-то разобрался с остальным, но это сработало, теперь файл можно кликнуть снаружи Code :: Blocks, работает прямо с рабочего стола.
источник
Добавьте путь к этой DLL в переменную окружения PATH.
источник
Включение -static-libgcc в строку компиляции решает проблему
По словам: @hardmath
Вы также можете создать псевдоним в своем профиле [.profile], если вы, например, на MSYS2
Теперь ваша команда GCC тоже работает ;-)
источник
Добавление «-static» к другим параметрам компоновщика решает эту проблему. У меня просто была такая же проблема после того, как я проверил это на другой системе, но не самостоятельно, поэтому, даже если вы не заметили этого в своей системе разработки, вы должны проверить, что у вас есть этот набор, если вы статически связываете.
Еще одно замечание: копирование библиотеки DLL в ту же папку, что и исполняемый файл, не является решением, так как она отрицает идею статической компоновки.
Другой вариант - использовать версию MinGW для TDM, которая решает эту проблему.
Обновление редактирования: это может решить проблему не для всех. Еще одна причина, которую я недавно обнаружил, заключается в том, что вы используете библиотеку, скомпилированную кем-то другим, в моем случае это был SFML, который был неправильно скомпилирован и поэтому требовал DLL, которой не существовало, поскольку она была скомпилирована с другой версией MinGW, чем та, которую я использовать. Я использую карликовую сборку, она использовала другую, поэтому у меня нигде не было DLL и, конечно, я не хотел ее, так как это была статическая сборка. Решением может быть нахождение другой сборки библиотеки или сборка самостоятельно.
источник
Работая с msys2, я получил ту же ошибку, пытаясь выполнить релиз-версию моего проекта в среде отладки. Решение моей проблемы очевидно: используйте исполняемый файл с символами отладки.
источник
В CodeBlocks вы можете перейти в Настройки ... Компилятор ... и выбрать 1) два элемента в синем поле или 2) один элемент в зеленом поле
источник
Если вам интересно, где вы можете скачать общую библиотеку (хотя это не будет работать на устройствах вашего клиента, если вы не включите DLL), вот ссылка: https://de.osdn.net/projects/mingw/downloads/72215/ libgcc-9.2.0-1-mingw32-длл-1.tar.xz /
источник