Не могу установить библиотеку cURL в Code::Blocks + MinGw
Я довольно новичок в c++. Возникла необходимость установить либу cURL в Code::Blocks. Почитав в сети я понял, что это можно сделать если:
- A) Установить в
compiler -> search directories -> compilerпапкуincludeс хедерами - B) Добавить в
compiler -> linkerфайлlibcurl.a
Взял для примера такой код:
#include <iostream>
#include "curl/curl.h"
#define CURL_STATIC
using namespace std;
int main()
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* example.com is redirected, so we tell libcurl to follow redirection */
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
cout << "curl_easy_perform() failed: " << curl_easy_strerror(res) << endl;
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
Проблема в том, что после этих действий при компиляции появляется бесчисленное число ошибок по типу:
||=== Build: Debug in [ИМЯ ПРОЕКТА] (compiler: GNU GCC Compiler) ===|
...\curl-7.69.0-win32-mingw\curl-7.69.0-win32-mingw\lib\libcurl.a(connect.o)|| undefined reference to `_imp__ntohs@4'|
...\curl-7.69.0-win32-mingw\curl-7.69.0-win32-mingw\lib\libcurl.a(connect.o)|| undefined reference to `_imp__getpeername@12'|
...\curl-7.69.0-win32-mingw\curl-7.69.0-win32-mingw\lib\libcurl.a(connect.o)|| undefined reference to `_imp__WSAGetLastError@0'|
На самом деле их больше сорока
После долгих поисков по сети я наткнулся на один ответ(уже не помню где):
В compiler -> linker нужно поместить два файла:
libcurl.alibcurl.dll.a
Окей, все скомпилировалось, НО при запуске программы через C::B(Компиляция и запуск) появляется диалог со следующей ошибкой: Ошибка при запуске приложения (0xc00000be). Для выхода из приложения нажмите "ОК".
Есть еще одно замечание:
Если я запущу программу из файла, который генерирует C::B, тоже появится ошибка, но содержания что на компьютере отсутствует libcurl.dll. Ладно, ее я нашел в архиве с cURL, кинул в директорию с программой. Теперь ошибка что нет libcrypto-1_1.dll. Я без понятия где брать эту библиотеку.
P.S.
Сейчас я понял, что установил не ту разрядность библиотеки(32). Я ее переустановил и сделал все тоже самое. Теперь у меня другая ошибка =)
||=== Build: Debug in [Имя проекта] (compiler: GNU GCC Compiler) ===|
:(.text.startup+0x2f)||undefined reference to `curl_easy_init'|
:(.text.startup+0x4d)||undefined reference to `curl_easy_setopt'|
:(.text.startup+0x65)||undefined reference to `curl_easy_setopt'|
:(.text.startup+0x6d)||undefined reference to `curl_easy_perform'|
:(.text.startup+0x91)||undefined reference to `curl_easy_strerror'|
:(.text.startup+0xad)||undefined reference to `curl_easy_cleanup'|
||error: ld returned 1 exit status|
||=== Build failed: 7 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
Примечания:
- сам хедер C::B находит
- при попытке установки флага curl в линковщике ошибка: ld.exe||cannot find -lcurl|
Буду очень благодарен видео-туториалу как это сделать, так все будет наиболее наглядно.
Установлен MinGw
Установлен Gcc. Сведения о версии:
Thread model: posix
gcc version 8.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project)
Установлен Code::Blocks версии 17.12
Библиотека cURL версии curl-7.69.0-win64-mingw; ссылка на архив'; Архив распакован в произвольную директорию
Windows 7 (64-х разрядная)
В настройках компилятора поставлена статическая компиляция