Многочисленные ошибки при попытке использовать cURL - PullRequest
0 голосов
/ 14 марта 2020

Когда я пытаюсь использовать curl, я получаю некоторые ошибки. Ошибки:

image

Severity    Code    Description Project File    Line    Suppression State
Error   LNK1120 15 unresolved externals Auth    C:\Users\ks665\source\repos\Auth\x64\Debug\Auth.exe 1   
Error   LNK2019 unresolved external symbol __imp_CertAddCertificateContextToStore referenced in function add_certs_to_store Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2001 unresolved external symbol __imp_CertCloseStore Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CertCloseStore referenced in function schannel_connect_step1   Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel.obj) 1   
Error   LNK2019 unresolved external symbol __imp_CertCreateCertificateChainEngine referenced in function Curl_verify_certificate    Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CertEnumCertificatesInStore referenced in function traverse_cert_store Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel.obj) 1   
Error   LNK2019 unresolved external symbol __imp_CertFindCertificateInStore referenced in function schannel_connect_step1   Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel.obj) 1   
Error   LNK2019 unresolved external symbol __imp_CertFindExtension referenced in function cert_get_name_string  Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CertFreeCertificateChain referenced in function Curl_verify_certificate    Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CertFreeCertificateChainEngine referenced in function Curl_verify_certificate  Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2001 unresolved external symbol __imp_CertFreeCertificateContext Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CertFreeCertificateContext referenced in function pkp_pin_peer_pubkey  Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel.obj) 1   
Error   LNK2019 unresolved external symbol __imp_CertGetCertificateChain referenced in function Curl_verify_certificate Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CertGetNameStringA referenced in function cert_get_name_string Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2001 unresolved external symbol __imp_CertOpenStore  Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CertOpenStore referenced in function schannel_connect_step1    Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel.obj) 1   
Error   LNK2019 unresolved external symbol __imp_CryptDecodeObjectEx referenced in function cert_get_name_string    Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CryptQueryObject referenced in function add_certs_to_store Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel_verify.obj)  1   
Error   LNK2019 unresolved external symbol __imp_CryptStringToBinaryA referenced in function schannel_connect_step1 Auth    C:\Users\ks665\source\repos\Auth\Auth\libcurl_a_debug.lib(schannel.obj) 1   

Я следовал нескольким инструкциям на YouTube и до сих пор не добился успеха.

Мой код:

#define CURL_STATICLIB
#include <iostream>
#include <string>

#include "curl/curl.h"
#ifdef _DEBUG
#pragma comment (lib, "curl/libcurl_a_debug.lib")
#else
#pragma comment (lib, "curl/libcurl_a.lib")
#endif
#pragma comment (lib, "Normaliz.lib")
#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Wldap32.lib")
#pragma comment (lib, "advapi32.lib")

static size_t my_write(void* buffer, size_t size, size_t nmemb, void* param)
{
    std::string& text = *static_cast<std::string*>(param);
    size_t totalsize = size * nmemb;
    text.append(static_cast<char*>(buffer), totalsize);
    return totalsize;
}

int main()
{
    std::string result;
    CURL* curl;
    CURLcode res;
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://tcno.co/hello.txt");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &result);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
        if (CURLE_OK != res) {
            std::cerr << "CURL error: " << res << '\n';
        }
    }
    curl_global_cleanup();
    std::cout << result << "\n\n";
}

1 Ответ

1 голос
/ 14 марта 2020

Это все ошибки LINKER. Вы не ссылаетесь на библиотеку, которая реализует функции, упомянутые в ошибках. В частности, вы не ссылаетесь на Crypt32.lib. Добавьте #pragma для этого:

#pragma comment (lib, "crypt32.lib")

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