@MasterCopipaster

Собрать пример CURL-приложения C++11 в MVS2019?

Взял с оф сайта пример: https://curl.se/libcurl/c/https.html
Взятый с оф сайта код
#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
    CURL* curl;
    CURLcode res;

    curl_global_init(CURL_GLOBAL_DEFAULT);

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");

#ifdef SKIP_PEER_VERIFICATION
        /*
         * If you want to connect to a site who isn't using a certificate that is
         * signed by one of the certs in the CA bundle you have, you can skip the
         * verification of the server's certificate. This makes the connection
         * A LOT LESS SECURE.
         *
         * If you have a CA cert for the server stored someplace else than in the
         * default bundle, then the CURLOPT_CAPATH option might come handy for
         * you.
         */
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
#endif

#ifdef SKIP_HOSTNAME_VERIFICATION
        /*
         * If the site you're connecting to uses a different host name that what
         * they have mentioned in their server certificate's commonName (or
         * subjectAltName) fields, libcurl will refuse to connect. You can skip
         * this check, but this will make the connection less secure.
         */
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif

        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
        /* Check for errors */
        if (res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(res));

        /* always cleanup */
        curl_easy_cleanup(curl);
    }

    curl_global_cleanup();

    return 0;
}


Warning C26812 The enum type 'CURLcode' is unscoped. Prefer 'enum class' over 'enum' (Enum.3)
Error LNK2019 unresolved external symbol __imp__curl_global_init referenced in function _main
.... и т.д.


Причем борода возникает при попытке собрать любой пример с CURL
Разумеется погуглил, заюзал эти инструкции и эту Везде одни и те же ошибки.

Все пакеты установлены из пакетного менеджера VS

curl.7.30.0.2
curl.redist.7.30.0.2
libssh2.1.4.3.1
libssh2.redist.1.4.3.1
openssl.1.0.1.21
openssl.redist.1.0.1.21
 zlib.1.2.8.1
 zlib.redist.1.2.8.1


Чего ему надо еще?
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
У вас проблемы с линковкой, не настроены или неверно выбраны import-библиотеки или статические библиотеки (зависит от того, как вы планируете линковать libcurl к своему проекту-примеру).
Также возможно неверно настроены определения комплиятора - некоторые библиотеки требуют задания констант препроцессора при динамической, или наоборот, статической линковке. Например, libcurl требует настройки CURL_STATICLIB при статической линковке.

Все пакеты установлены из пакетного менеджера VS

Закопайте эти библиотеки, проект CoApp, который был посвящён идее использовать NuGet для нативных (С/С++) библиотек, умер почти сразу после своего рождения, на границе 2014/2015 годов. Это очень старые версии, к тому же. Практика показала, что NuGet в большинстве случаев не годится для нативных библиотек (не буду расписывать, почему).

Используйте для C/C++ проектов нормальные пакетные менеджеры вроде Conan или, на худой конец, Vcpkg. Там это всё уже предусмотрено. Впрочем, это не отменяет необходимости понимания простейших ошибок компилятора/линковщика и его основных опций.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы