尝试使用cURL时出现多个错误

问题描述 投票:0回答:1

[当我尝试使用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";
}
c++ curl
1个回答
0
投票

这些都是LINKER错误。您没有链接到实现错误中提到的功能的库。具体来说,您没有链接到Crypt32.lib。为此添加#pragma

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

© www.soinside.com 2019 - 2024. All rights reserved.