С++ добавляет статический libcurl, не компилируется

Я использую eclipse и mingw32. Моя проблема в том, что когда я добавляю флаг -static в параметры компоновщика, я получаю это сообщение об ошибке: mingw32/bin/ld.exe: cannot find -llibcurl

Без флага -static он прекрасно сочетается и работает. Я скомпилировал libcurl с помощью mingw32. Затем я скопировал заголовочные файлы в папку mingw include, а файлы из папки libcurl lib — в папку mingw lib. Я делаю что-то не так, но я не знаю, что.


person John    schedule 28.08.2013    source источник
comment
Какое расширение у файла libcurl в папке lib?   -  person krsteeve    schedule 28.08.2013
comment
В папке lib есть файлы libcurl.res, libcurl.a, libcurl.dll, libcurl,def и libcurl.rc.   -  person John    schedule 28.08.2013


Ответы (1)


-static означает «Не связываться с общими библиотеками». Если вы не используете эту опцию, компоновщик связывает двоичный файл с общей версией (libcurl.so в Linux/libcurl.dll в Windows). Возможно, у вас нет статической версии libcurl в вашей среде разработки или вы не указали правильный путь к файлу (libcurl.lib).

person OziMan    schedule 28.08.2013
comment
У меня есть файл libcurl.a в папке lib, я думаю, это то же самое? И да, я хочу, чтобы exe работал без зависимостей, поэтому я использую -static. - person John; 28.08.2013
comment
вы можете попробовать изменить расширение этого файла на lib и повторить попытку. Насколько я знаю, .lib используется для статических библиотек. - person OziMan; 28.08.2013
comment
Я попробовал, но выдал другое: libcurl.lib(easy.o):(.text+0x1b5): неопределенная ссылка на `WSACleanup@0' - person John; 28.08.2013
comment
Это может помочь stackoverflow.com/questions/2033608/mingw-linker-error -winsock вам также может понадобиться статическая версия библиотеки winsock или вы связали ее? - person OziMan; 29.08.2013