#c #windows #g #cygwin
#c #Windows #g #cygwin
Вопрос:
Есть небольшой проект на C (в нем есть код win32), который мне нужно собрать. У него уже есть свой Makefile. Мне сказали использовать MinGW. Я никогда не использовал его раньше. Я скачал и установил последнюю версию установщика MinGW.
Затем я открыл оболочку MinGW и сделал make
. Был создан exe-файл. Но когда я пытаюсь запустить его, я получаю, что libgcc_s_dw2-1.dll
отсутствует! Почему я получаю эту ошибку? Разве exe не должен быть автономным и запускаться где угодно?
Обновить
Вот дополнительная информация из файла Makefile:
CC = g
CCOPTIONS=-DWINDOWS -DFORCEINLINE -DMINGW -DSRTP_SUPPORT -D__EXPORT= -D_WIN32_WINNT=0x0501 -DNOMVS
setup.exe: setup.o common.o
$(CC) -ggdb -g -O0 -o $@ setup.o common.o -mno-cygwin -mwindows -lwsock32 -lws2_32 -lwinmm -lgdi32 -lcomctl32 -lmapi32 -lVfw32
Ответ №1:
Должен ли exe быть автономным, зависит от того, как вы его собрали. Нам нужно просмотреть команды, которые были выполнены, или опубликовать makefile. Но эта DLL, похоже, не является частью текущей версии MinGW. Также, пожалуйста, уточните, действительно ли вы делаете это под cygwin, или вы добавили тег по ошибке.
Редактировать: Немного погуглив, кажется, что это связано с ужасной «официальной» установкой MinGW. Удалите ее и загрузите сборку Twilight Dragon с http://tdm-gcc.tdragon .подключитесь, а затем полностью перестройте. «Официальная» сборка в любом случае cr * p — я не знаю, почему кто-то ее использует.
Комментарии:
1. Обновленный пост. Я скачал и установил MinGW с sourceforge.net/projects/mingw/files (добавлена поддержка msys). Я пометил как cygwin, потому что не было другого тега с linux-like для Windows
2. Спасибо, я попробую это. Может ли он также компилировать код win32? Однако после вашего первоначального сообщения опция
-mno-cygwin
в makefile вызывает у меня осторожность. Может ли это вызвать какие-либо проблемы?3. @user Не знаю — я сам этим никогда не пользуюсь. Дистрибутив TDM представляет собой переработанную версию MinGW, он может делать все, что может MinGW _ Я использую его для всего моего программирования на C .
Ответ №2:
Если вы хотите создать отдельное приложение с MinGW, вам следует добавить -static
в параметры компоновки.
Кстати, если вы создаете приложение Win32, добавьте -mwindows
опцию в компилятор C , чтобы оно не открывало консоль вместе с вашим главным окном.
Комментарии:
1. У него есть -mwindows. И нужен ли -static, зависит от того, с чем он связывается.
2. @Neil Butterworth: Вы правы, я пропустил
-mwindows
его варианты CCOPTIONS. Я бы все же-static
попробовал, потому что у меня есть последняя версия MinGW и libgcc_s_dw2-1.dll является ее частью.