* Изменить: я получил CURL, работающий в VS 2017 на 64-битной машине, выполнив следующие действия (оригинальная проблема приведена ниже):
Сначала установите vcpkg:
C:\Program Files
C:\Program Files\vcpkg
.\bootstrap-vcpkg.bat
vcpkg integrate install
Затем используйте vcpkg и командную строку Visual Studios 2017 для установки cURL:
VS 2017 Command prompt
и перейдите в папку vcpkg (где vcpkg.exe
является)vcpkg install curl[*]:x64-windows
(обратите внимание, что загрузка и запуск могут занять около получаса, не беспокойтесь, если кажется, что он «застрял» в деталях). * Редактировать: ранее мои инструкции говорили о запуске vcpkg install curl:x64-windows
но я добавил на [*]
по просьбе @ i7clock для включения протоколов sftp и scp.#include curl/curl.h
без добавления каких-либо дополнительных каталогов. Если вы не можете этого сделать, значит, что-то пошло не так с вашей установкой curl. Вы должны удалить curl (и, возможно, даже папку vcpkg и выполнить чистую установку), пока не сможете включить curl/curl.h
,* Изменить: это будет работать, только если вы используете отладчик / компилятор x64 в x64! Если вы не можете включить проверку каталога curl, чтобы убедиться, что для вашей отладки установлена правильная версия Windows.
Вам также может потребоваться отключить проверку SSL-пиров:
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
до запроса (см. ниже). Обратите внимание, что это необходимо только потому, что я не мог понять, как получить сертификаты для работы с curl. У меня есть еще не отвеченный пост stackoverflow по этой проблеме Вот.Вот некоторые другие шаги, которые вам могут понадобиться для запуска, но я обнаружил, что они не нужны:
CURL_STATICLIB
в Свойствах -> C / C ++ -> Препроцессор -> Определения препроцессораВот мой теперь работающий код:
#include "curl/curl.h"
void testCurl() {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
#ifdef SKIP_PEER_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
#endif
#ifdef SKIP_HOSTNAME_VERIFICATION
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
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);
}
curl_global_cleanup();
}
int main(){
testCurl();
return 0;
}
* Изменить: Вот остальная часть объяснения моей старой проблемы, прежде чем она была решена:
Я пытаюсь использовать cURL для вызова API, чтобы я мог начать получать данные о запасах в реальном времени, но я сталкиваюсь с трудностями при его использовании в VS 2017. Я попытался установить с помощью vcpckg используя следующие шаги:
Согласно документации vcpkg, я теперь могу просто #include, но он не может найти папку. Если я попытаюсь включить каталог «include» из vcpkg \ packages \ curl_x86 \ include и #include, я смогу построить свой проект. Я также могу получить доступ к некоторым классам, но если я попытаюсь установить curl_global_init (CURL_GLOBAL_DEFAULT), как в этом примере, я получаю ошибки компоновщика.
Вы установили версию curl для x86 с помощью vcpkg (это x86 в vcpkg\packages\curl_x86\include
). Вам необходимо установить версию x64, соответствующую вашему проекту:
>vcpkg install curl:x64-windows
Других решений пока нет …