yhirose / cpp-httplib

A C++ header-only HTTP/HTTPS server and client library
MIT License
12.78k stars 2.26k forks source link

Cannot compile v3.0.10 in windows 10: Can't parse symbols _openssl_sk_num _openssl_sk_vlaue ... #1647

Closed shangdev closed 1 year ago

shangdev commented 1 year ago

When I compile the dll(Debug x86) project, I get the following error:

1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _OPENSSL_sk_num,函数 "private: bool __thiscall httplib::SSLClient::verify_host_with_subject_alt_name(struct x509_st *)const " (?verify_host_with_subject_alt_name@SSLClient@httplib@@ABE_NPAUx509_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _OPENSSL_sk_value,函数 "private: bool __thiscall httplib::SSLClient::verify_host_with_subject_alt_name(struct x509_st *)const " (?verify_host_with_subject_alt_name@SSLClient@httplib@@ABE_NPAUx509_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _BIO_ctrl,函数 "struct ssl_st * __cdecl httplib::detail::ssl_new<class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405> >(unsigned int,struct ssl_ctx_st *,class std::mutex &,class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405>)" (??$ssl_new@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@detail@httplib@@YAPAUssl_st@@IPAUssl_ctx_st@@AAVmutex@std@@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _BIO_new_socket,函数 "struct ssl_st * __cdecl httplib::detail::ssl_new<class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405> >(unsigned int,struct ssl_ctx_st *,class std::mutex &,class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405>)" (??$ssl_new@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@detail@httplib@@YAPAUssl_st@@IPAUssl_ctx_st@@AAVmutex@std@@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _ASN1_STRING_length,函数 "private: bool __thiscall httplib::SSLClient::verify_host_with_subject_alt_name(struct x509_st *)const " (?verify_host_with_subject_alt_name@SSLClient@httplib@@ABE_NPAUx509_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _ASN1_STRING_get0_data,函数 "private: bool __thiscall httplib::SSLClient::verify_host_with_subject_alt_name(struct x509_st *)const " (?verify_host_with_subject_alt_name@SSLClient@httplib@@ABE_NPAUx509_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _EVP_MD_CTX_new,函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl httplib::detail::message_digest(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct evp_md_st const *)" (?message_digest@detail@httplib@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@PBUevp_md_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _EVP_MD_CTX_free,函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl httplib::detail::message_digest(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct evp_md_st const *)" (?message_digest@detail@httplib@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@PBUevp_md_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _EVP_DigestInit_ex,函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl httplib::detail::message_digest(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct evp_md_st const *)" (?message_digest@detail@httplib@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@PBUevp_md_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _EVP_DigestUpdate,函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl httplib::detail::message_digest(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct evp_md_st const *)" (?message_digest@detail@httplib@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@PBUevp_md_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _EVP_DigestFinal_ex,函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl httplib::detail::message_digest(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct evp_md_st const *)" (?message_digest@detail@httplib@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@PBUevp_md_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _EVP_md5,函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl httplib::detail::MD5(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?MD5@detail@httplib@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _EVP_sha256,函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl httplib::detail::SHA_256(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?SHA_256@detail@httplib@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _EVP_sha512,函数 "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl httplib::detail::SHA_512(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?SHA_512@detail@httplib@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _X509_STORE_free,函数 "public: void __thiscall httplib::SSLClient::set_ca_cert_store(struct x509_store_st *)" (?set_ca_cert_store@SSLClient@httplib@@QAEXPAUx509_store_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _X509_STORE_add_cert,函数 "bool __cdecl httplib::detail::load_system_certs_on_windows(struct x509_store_st *)" (?load_system_certs_on_windows@detail@httplib@@YA_NPAUx509_store_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _X509_free,函数 "public: __thiscall <lambda_3fd79d81ef20be40415cfbaec70f6637>::operator()(struct ssl_st *)const " (??R<lambda_3fd79d81ef20be40415cfbaec70f6637>@@QBE@PAUssl_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _d2i_X509,函数 "bool __cdecl httplib::detail::load_system_certs_on_windows(struct x509_store_st *)" (?load_system_certs_on_windows@detail@httplib@@YA_NPAUx509_store_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _X509_get_subject_name,函数 "private: bool __thiscall httplib::SSLClient::verify_host_with_common_name(struct x509_st *)const " (?verify_host_with_common_name@SSLClient@httplib@@ABE_NPAUx509_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _X509_NAME_get_text_by_NID,函数 "private: bool __thiscall httplib::SSLClient::verify_host_with_common_name(struct x509_st *)const " (?verify_host_with_common_name@SSLClient@httplib@@ABE_NPAUx509_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _X509_get_ext_d2i,函数 "private: bool __thiscall httplib::SSLClient::verify_host_with_subject_alt_name(struct x509_st *)const " (?verify_host_with_subject_alt_name@SSLClient@httplib@@ABE_NPAUx509_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_CTX_new,函数 "public: __thiscall httplib::SSLClient::SSLClient(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0SSLClient@httplib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H00@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_CTX_free,函数 "public: __thiscall httplib::SSLClient::SSLClient(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0SSLClient@httplib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H00@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_CTX_get_cert_store,函数 "public: __thiscall <lambda_d29a6c30af462ed9aa63b26b6aecba66>::operator()(void)const " (??R<lambda_d29a6c30af462ed9aa63b26b6aecba66>@@QBE@XZ) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_CTX_set_cert_store,函数 "public: void __thiscall httplib::SSLClient::set_ca_cert_store(struct x509_store_st *)" (?set_ca_cert_store@SSLClient@httplib@@QAEXPAUx509_store_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_pending,函数 "public: virtual long __thiscall httplib::detail::SSLSocketStream::read(char *,unsigned int)" (?read@SSLSocketStream@detail@httplib@@UAEJPADI@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_set_bio,函数 "struct ssl_st * __cdecl httplib::detail::ssl_new<class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405> >(unsigned int,struct ssl_ctx_st *,class std::mutex &,class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405>)" (??$ssl_new@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@detail@httplib@@YAPAUssl_st@@IPAUssl_ctx_st@@AAVmutex@std@@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_set_verify,函数 "public: __thiscall <lambda_3fd79d81ef20be40415cfbaec70f6637>::operator()(struct ssl_st *)const " (??R<lambda_3fd79d81ef20be40415cfbaec70f6637>@@QBE@PAUssl_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_CTX_use_PrivateKey_file,函数 "public: __thiscall httplib::SSLClient::SSLClient(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0SSLClient@httplib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H00@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_CTX_use_certificate_file,函数 "public: __thiscall httplib::SSLClient::SSLClient(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0SSLClient@httplib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H00@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_get1_peer_certificate,函数 "public: __thiscall <lambda_3fd79d81ef20be40415cfbaec70f6637>::operator()(struct ssl_st *)const " (??R<lambda_3fd79d81ef20be40415cfbaec70f6637>@@QBE@PAUssl_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_new,函数 "struct ssl_st * __cdecl httplib::detail::ssl_new<class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405> >(unsigned int,struct ssl_ctx_st *,class std::mutex &,class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405>)" (??$ssl_new@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@detail@httplib@@YAPAUssl_st@@IPAUssl_ctx_st@@AAVmutex@std@@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_free,函数 "struct ssl_st * __cdecl httplib::detail::ssl_new<class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405> >(unsigned int,struct ssl_ctx_st *,class std::mutex &,class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405>)" (??$ssl_new@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@detail@httplib@@YAPAUssl_st@@IPAUssl_ctx_st@@AAVmutex@std@@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_connect,函数 "public: __thiscall <lambda_3fd79d81ef20be40415cfbaec70f6637>::operator()(struct ssl_st *)const " (??R<lambda_3fd79d81ef20be40415cfbaec70f6637>@@QBE@PAUssl_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_read,函数 "public: virtual long __thiscall httplib::detail::SSLSocketStream::read(char *,unsigned int)" (?read@SSLSocketStream@detail@httplib@@UAEJPADI@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_peek,函数 "protected: bool __thiscall httplib::ClientImpl::process_request(class httplib::Stream &,struct httplib::Request &,struct httplib::Response &,bool,enum httplib::Error &)" (?process_request@ClientImpl@httplib@@IAE_NAAVStream@2@AAURequest@2@AAUResponse@2@_NAAW4Error@2@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_write,函数 "public: virtual long __thiscall httplib::detail::SSLSocketStream::write(char const *,unsigned int)" (?write@SSLSocketStream@detail@httplib@@UAEJPBDI@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_ctrl,函数 "public: __thiscall httplib::detail::SSLSocketStream::SSLSocketStream(unsigned int,struct ssl_st *,__int64,__int64,__int64,__int64)" (??0SSLSocketStream@detail@httplib@@QAE@IPAUssl_st@@_J111@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_get_error,函数 "bool __cdecl httplib::detail::ssl_connect_or_accept_nonblocking<int (__cdecl*)(struct ssl_st *)>(unsigned int,struct ssl_st *,int (__cdecl*)(struct ssl_st *),__int64,__int64)" (??$ssl_connect_or_accept_nonblocking@P6AHPAUssl_st@@@Z@detail@httplib@@YA_NIPAUssl_st@@P6AH0@Z_J2@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _TLS_client_method,函数 "public: __thiscall httplib::SSLClient::SSLClient(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0SSLClient@httplib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H00@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_shutdown,函数 "struct ssl_st * __cdecl httplib::detail::ssl_new<class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405> >(unsigned int,struct ssl_ctx_st *,class std::mutex &,class <lambda_3fd79d81ef20be40415cfbaec70f6637>,class <lambda_d347c27f5c0e0c47ff9d6058ba931405>)" (??$ssl_new@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@detail@httplib@@YAPAUssl_st@@IPAUssl_ctx_st@@AAVmutex@std@@V<lambda_3fd79d81ef20be40415cfbaec70f6637>@@V<lambda_d347c27f5c0e0c47ff9d6058ba931405>@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_CTX_set_default_verify_paths,函数 "public: __thiscall <lambda_d29a6c30af462ed9aa63b26b6aecba66>::operator()(void)const " (??R<lambda_d29a6c30af462ed9aa63b26b6aecba66>@@QBE@XZ) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_CTX_load_verify_locations,函数 "public: __thiscall <lambda_d29a6c30af462ed9aa63b26b6aecba66>::operator()(void)const " (??R<lambda_d29a6c30af462ed9aa63b26b6aecba66>@@QBE@XZ) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _SSL_get_verify_result,函数 "public: __thiscall <lambda_3fd79d81ef20be40415cfbaec70f6637>::operator()(struct ssl_st *)const " (??R<lambda_3fd79d81ef20be40415cfbaec70f6637>@@QBE@PAUssl_st@@@Z) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _OPENSSL_init_ssl,函数 "public: __thiscall httplib::detail::SSLInit::SSLInit(void)" (??0SSLInit@detail@httplib@@QAE@XZ) 中引用了该符号
1>HttpClient.obj : error LNK2019: 无法解析的外部符号 _GENERAL_NAMES_free,函数 "private: bool __thiscall httplib::SSLClient::verify_host_with_subject_alt_name(struct x509_st *)const " (?verify_host_with_subject_alt_name@SSLClient@httplib@@ABE_NPAUx509_st@@@Z) 中引用了该符号

Windwos 10 VS2019 openssl: Win32 v3.0.10(https://slproweb.com/products/Win32OpenSSL.html) I've added the openssl lib directory and include directory correctly in the project.

Can you help me with this?

shangdev commented 1 year ago

ADD libcrypto.lib、libssl.lib、openssl.lib To 附加依赖项