LibCurl - релиз Static Lib, связывающий проблемы - PullRequest
1 голос
/ 10 сентября 2011

Я занимаюсь этим уже некоторое время. Я надеюсь, что кто-то может сказать мне, что я делаю неправильно.

Вот шаги, которые я предпринял до сих пор:

-Скачать последнюю версию cURL (7.21.7).

-Открыто решение в Visual Studio 2010 с использованием vc6curl.dsw и преобразовано проекты в VS2010.

- Установить конфигурацию проекта libcurl в "release" и встроенную. Построение выполнено успешно. Создана папка «LIB-Release». Он содержит несколько файлов obj, и здесь также находится файл "libcurl.lib".

Тестовое приложение:

-В настройках проекта я указывал компилятору на включение curl (заголовков).

C / C ++ >> Общие >> Дополнительные каталоги для включения

-Добавлено "CURL_STATICLIB" к определениям препроцессора

C / C ++ >> Определения препроцессора

-Добавлен путь к папке "libcurl.lib" в моем компоновщике дополнительных библиотечных зависимостей

Ссылка >> Общие >> Дополнительные каталоги библиотек

-Добавлено "libcurl.lib" к моему компоновщику дополнительные зависимости

Ссылка >> Ввод >> Дополнительные зависимости

- Установите конфигурацию моих проектов в «Realease» и нажмите «build»!

Я получаю 42 неразрешенных внешних ошибок:

Ошибка 65: ошибка LNK1120: 42 не устранены. внешние C: \ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ Release \ curl_static_lib.exe curl_static_lib Ошибка 61, ошибка LNK2001: неразрешенный внешний символ ___ WSAFDIsSet @ 8 C: \ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib (select.obj) curl_static_lib Ошибка 59, ошибка LNK2001: неразрешенный внешний символ _ imp _accept @ 12 C: \ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib (ftp.obj) curl_static_lib Ошибка 46 Ошибка LNK2001: неразрешенный внешний символ _ imp _ber_free C: \ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib (ldap.obj) curl_static_lib Ошибка 26, ошибка LNK2001: неразрешенный внешний символ _ imp _bind @ 12 C: \ Users \ Nick \ Documents \ Visual Studio 2010 \ Projects \ curl_static_lib \ curl_static_lib \ libcurl.lib (connect.obj) curl_static_lib

Я также пытался собрать с использованием конфигурации "Debug". Может кто-нибудь сказать мне, где я иду не так?

Ответы [ 2 ]

1 голос
/ 11 сентября 2011

Лучший способ создать CURL для Windows - это использовать NMake с предоставленными Makefiles.Вы можете

  1. Изменить Makefile в корневой папке CURL, чтобы установить используемую версию VC, а затем запустить nmake vc-all (или выбрать любую другую цель VC, подходящую для вас).Проверьте раздел «Win32» файла ./docs/INSTALL.

  2. Используйте Makefile.vc из папки ./winbuild.Проверьте ./winbuild/BUILD.WINDOWS.txt о том, как его использовать.

0 голосов
/ 10 сентября 2011

Эти ошибки означают, что есть функции, которые использует libcurl, которых нет ни в одной из библиотек импорта, указанных в вашей конфигурации компоновщика.

Звучит так, как минимум там должна быть библиотека lib для импорта сокетов (ws2_32.lib).

Обратите внимание, что если вы компилируете libcurl как DLL, то все библиотеки импорта указываются как часть связывания DLL, поэтому вашему приложению не нужно импортировать все эти библиотеки, а просто нужно связать их с библиотекой импорта curl , Тот факт, что вы выбрали компиляцию curl как статической библиотеки, делает код curl частью вашего приложения, поэтому все библиотеки поддержки должны быть предоставлены в конфигурации компоновщика вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...