Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/65: Рейтинг темы: голосов - 65, средняя оценка - 4.91
2 / 2 / 2
Регистрация: 11.06.2013
Сообщений: 31

Curl и MS Visual C++ 2013 статическая линковка

08.03.2015, 18:09. Показов 12891. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Компилирую библиотеку из папки "curl-7.41.0\projects\Windows\VC12" (LIB Release).

Подключаю ее в проект с помощью:
C++
1
#pragma comment(lib,"libcurl.lib")
Получаю такие ошибки:
Code
1
2
3
4
5
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__curl_easy_strerror в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__curl_easy_init в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__curl_easy_setopt в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__curl_easy_perform в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__curl_easy_cleanup в функции _main
Почитав пункт 5.7 здесь: http://curl.haxx.se/docs/faq.html добавил CURL_STATICLIB в определения препроцессора.

В итоге при компиляции ошибок еще больше.
Кликните здесь для просмотра всего текста
1>LINK : warning LNK4098: библиотека по умолчанию "MSVCRT" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library
1>libcurl.lib(easy.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__WSAStartup@8 в функции _win32_init
1>libcurl.lib(telnet.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSAStartup@8"
1>libcurl.lib(easy.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__WSACleanup@0 в функции _win32_cleanup
1>libcurl.lib(telnet.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSACleanup@0"
1>libcurl.lib(telnet.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSAGetLastError@0"
1>libcurl.lib(tftp.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSAGetLastError@0"
1>libcurl.lib(ftp.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSAGetLastError@0"
1>libcurl.lib(asyn-thread.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__WSAGetLastError@0 в функции _Curl_resolver_getaddrinfo
1>libcurl.lib(select.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSAGetLastError@0"
1>libcurl.lib(sendf.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSAGetLastError@0"
1>libcurl.lib(connect.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSAGetLastError@0"
1>libcurl.lib(select.obj) : error LNK2019: ссылка на неразрешенный внешний символ ___WSAFDIsSet@8 в функции _Curl_poll
1>libcurl.lib(select.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__select@20 в функции _Curl_poll
1>libcurl.lib(select.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__WSASetLastError@4 в функции _Curl_wait_ms
1>libcurl.lib(connect.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSASetLastError@4"
1>libcurl.lib(curl_addrinfo.obj) : error LNK2001: неразрешенный внешний символ "__imp__WSASetLastError@4"
1>libcurl.lib(sendf.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__recv@16 в функции _Curl_read_plain
1>libcurl.lib(connect.obj) : error LNK2001: неразрешенный внешний символ "__imp__recv@16"
1>libcurl.lib(sendf.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__send@16 в функции _Curl_send_plain
1>libcurl.lib(telnet.obj) : error LNK2001: неразрешенный внешний символ "__imp__send@16"
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__bind@12 в функции _bindlocal
1>libcurl.lib(tftp.obj) : error LNK2001: неразрешенный внешний символ "__imp__bind@12"
1>libcurl.lib(ftp.obj) : error LNK2001: неразрешенный внешний символ "__imp__bind@12"
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__closesocket@4 в функции _Curl_closesocket
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__connect@12 в функции _singleipconnect
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__getpeername@12 в функции _Curl_updateconninfo
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__getsockname@12 в функции _Curl_updateconninfo
1>libcurl.lib(ftp.obj) : error LNK2001: неразрешенный внешний символ "__imp__getsockname@12"
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__getsockopt@20 в функции _Curl_sndbufset
1>libcurl.lib(ftp.obj) : error LNK2001: неразрешенный внешний символ "__imp__htons@4"
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__htons@4 в функции _bindlocal
1>libcurl.lib(curl_addrinfo.obj) : error LNK2001: неразрешенный внешний символ "__imp__htons@4"
1>libcurl.lib(smb.obj) : error LNK2001: неразрешенный внешний символ "__imp__htons@4"
1>libcurl.lib(telnet.obj) : error LNK2001: неразрешенный внешний символ "__imp__htons@4"
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ntohs@4 в функции _bindlocal
1>libcurl.lib(ftp.obj) : error LNK2001: неразрешенный внешний символ "__imp__ntohs@4"
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__setsockopt@20 в функции _Curl_sndbufset
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__socket@12 в функции _Curl_socket
1>libcurl.lib(connect.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__WSAIoctl@36 в функции _tcpkeepalive
1>libcurl.lib(curl_addrinfo.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__getaddrinfo@16 в функции _Curl_getaddrinfo_ex
1>libcurl.lib(curl_addrinfo.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__freeaddrinfo@4 в функции _Curl_getaddrinfo_ex
1>libcurl.lib(tftp.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__recvfrom@24 в функции _tftp_receive_packet
1>libcurl.lib(tftp.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__sendto@24 в функции _tftp_rx
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_init в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_unbind_s в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_set_option в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_simple_bind_s в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_search_s в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_msgfree в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_err2string в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_first_entry в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_next_entry в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_first_attribute в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_next_attribute в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_get_values_len в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_value_free_len в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_get_dn в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ldap_memfree в функции _Curl_ldap
1>libcurl.lib(ldap.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ber_free в функции _Curl_ldap
1>libcurl.lib(ftp.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__accept@12 в функции _AcceptServerConnect
1>libcurl.lib(ftp.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__listen@8 в функции _ftp_state_use_port
1>libcurl.lib(nonblock.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ioctlsocket@12 в функции _curlx_nonblock
1>libcurl.lib(curl_gethostname.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__gethostname@8 в функции _Curl_gethostname

Далее добавляю msvcrt.lib в Project properties -> configuration properties -> linker -> input -> Ignore Specific Default libraries.

В итоге получаю те же самые ошибки, но без "LINK : warning LNK4098: библиотека по умолчанию "MSVCRT" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library"

Причем если компилировать DLL Release, и в папку с .exe файлом положить libcurl.dll, то всё работает.

Что я не так делаю?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2015, 18:09
Ответы с готовыми решениями:

Не удаётся собрать CURL + SSL статическая линковка
Ребят, нужна помощь, сам уже не вытягиваю. Пытаюсь собрать Curl (static) + SSL (static). Задача у меня следующая: собрать одну единственную...

Curl без ssl или статическая линковка
Здравствуйте. Создал дллку, статически прилинковал curllib, вот только курл потянул за собой пачку ssl библиотек и openldap(это что-то из...

Статическая линковка Qt 5.3.2 под Visual Studio 2012
В общем я уже 2 дня парюсь с этой чушью и ничего толком не добился. У кого получается статически линковать библиотеки в релиз? Помогите, а?...

14
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.03.2015, 22:26
Блог: Библиотека libcurl в С++ для работы по HTTP

И последняя тема в списке Curl без ssl или статическая линковка
0
2 / 2 / 2
Регистрация: 11.06.2013
Сообщений: 31
08.03.2015, 22:34  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Блог: Библиотека libcurl в С++ для работы по HTTP
Читал это. Информация там немного устарела. На офф сайте больше нет версии библиотеки для Win32 - MSVC.
Цитата Сообщение от Avazart Посмотреть сообщение
И последняя тема в списке Работа с CURL
-static в Visual Studio тоже можно прописать?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.03.2015, 22:37
Цитата Сообщение от DmitryScaletta Посмотреть сообщение
Читал это. Информация там немного устарела. На офф сайте больше нет версии библиотеки для Win32 - MSVC.
Да это я указал в комментариях в блоге

Смотрите:
Цитата Сообщение от Avazart Посмотреть сообщение
И последняя тема в списке Curl без ssl или статическая линковка
0
2 / 2 / 2
Регистрация: 11.06.2013
Сообщений: 31
08.03.2015, 22:48  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Смотрите:
И последняя тема в списке Curl без ssl или статическая линковка
Так я делаю все по инструкции: статически собираю libcurl.lib, подключаю ее к проекту,
C++
1
#pragma comment(lib,"libcurl.lib")
но ничего не работает
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.03.2015, 22:57
Значит libcurl.lib не тот копирнули или не туда копирнули..
0
2 / 2 / 2
Регистрация: 11.06.2013
Сообщений: 31
08.03.2015, 22:57  [ТС]
Если собрать, как libcurl.lib + libcurl.dll то всё работает.
Но не хочется .dll файл всегда таскать за собой.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.03.2015, 22:58
Оно и так и так работает, проверено.
Просто будьте более внимательными.
0
2 / 2 / 2
Регистрация: 11.06.2013
Сообщений: 31
08.03.2015, 23:03  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Значит libcurl.lib не тот копирнули или не туда копирнули..
Собирал в конфигурации "LIB Release". Без OpenSSL и прочего.
Получился libcurl.lib размером 3.16 MB
Положил его в папку с проектом, там же, где .sln и .vcxproj файлы.
В итоге получаю 43 ошибки при попытке компиляции (они в шапке под спойлером).
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.03.2015, 23:03
Еще на заметку Curl с нуля
1
2 / 2 / 2
Регистрация: 11.06.2013
Сообщений: 31
08.03.2015, 23:25  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Еще на заметку Curl с нуля
Наконец-то разобрался. Спасибо за помощь!

Вот рабочая версия самого простого примера программы. Может кому пригодится:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#define CURL_STATICLIB // используется статическая сборка библиотеки
 
#include <stdio.h>
#include <curl/curl.h>
 
#ifdef _DEBUG
#pragma comment(lib,"libcurld.lib")
#else
#pragma comment(lib,"libcurl.lib")
#endif
 
#pragma comment(lib,"ws2_32.lib")  // Зависимость от WinSocks2
#pragma comment(lib,"wldap32.lib")
 
int main(void)
{
    CURL *curl;
    CURLcode res;
 
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://ya.ru");
 
        /* Выполнение запроса, res будет содержать код возврата */
        res = curl_easy_perform(curl);
        /* Проверка на ошибки */
        if (res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
            curl_easy_strerror(res));
 
        /* Очистка */
        curl_easy_cleanup(curl);
    }
 
    system("pause");
 
    return 0;
}
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
03.05.2019, 00:17
Цитата Сообщение от DmitryScaletta Посмотреть сообщение
Наконец-то разобрался. Спасибо за помощь!
...
Так как в итоге у Вас получилось собрать ?
У меня таже ошибка

Запускал командною строку VS2017, там указывал эту команду:

C++
1
nmake /f Makefile.vc mode=static VC=16
Поcле чего создалось три папки:
C++
1
2
3
libcurl-vc16-x86-release-static-ipv6-sspi-winssl
libcurl-vc16-x86-release-static-ipv6-sspi-winssl-obj-curl
libcurl-vc16-x86-release-static-ipv6-sspi-winssl-obj-lib
После чего в С/C++ --> Общие --> дополнительные каталоги включаемых файлов --> указал путь:
C++
1
C:\curl-7.64.1\builds\libcurl-vc16-x86-release-static-ipv6-sspi-winssl\include\
И Комопоновщик --> дополнительные каталоги библиотек --> указал путь:
C++
1
C:\curl-7.64.1\builds\libcurl-vc16-x86-release-static-ipv6-sspi-winssl\lib
Но все равно ошибка:
C++
1
2
Серьезность  Код  Описание    Проект    Файл    Строка    Состояние подавления
LNK2019 ссылка на неразрешенный внешний символ __imp__curl_easy_init в функции _main
0
1 / 1 / 0
Регистрация: 10.04.2016
Сообщений: 1
04.05.2019, 16:27
Цитата Сообщение от Optimus11 Посмотреть сообщение
Так как в итоге у Вас получилось собрать ?
У меня таже ошибка
Построенные libcurl_a копируем в Release вашего проекта , libcurl_a_debug копируем в Debug вашего проекта .
Далее в фаиле реализации #define CURL_STATICLIB и #pragma comment(lib,"libcurl.lib") , не в коем случае не #pragma comment(lib,"libcurl_a.lib").
1
0 / 0 / 0
Регистрация: 25.05.2019
Сообщений: 3
26.05.2019, 04:25
На офф сайте больше нет версии библиотеки для Win32 - MSVC.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.05.2019, 13:45
Там кажется вообще только исходники есть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.05.2019, 13:45
Помогаю со студенческими работами здесь

Статическая линковка VS динамическая линковка
Существует два типа линкования библиотек: статическое и динамическое. При статической линковке все подключённые к проекту библиотеки .lib...

Qt 5.1.1 статическая линковка
Да, наверное такая тема часто проскальзывает, но я все равно не понял...(( Я начал изучать Qt и мне он понравился, но когда я...

Статическая линковка?
Куку, хотелось бы узнать, можно ли как то упаковать программу(1.exe) и библиотеку (.dll), которую использует программа и которая лежит...

Статическая линковка Qt 5.6
Решил я обновить Qt до 5.6. После чего надо было собрать комплект статической сборки. Решил собирать по этой инструкции...

Статическая линковка
Здравствуйте! Последние несколько дней пытаюсь собрать Qt для стат. сборки, безуспешно. Не даст-ли какой-нибудь добрый человек мне архивчик...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru