libcurl_a_debug.lib ws2_32.lib wldap32.lib
我无法将libcurl编译为在c ++项目中工作的静态库。构建包含curl的项目会导致链接器错误。
我从https://curl.haxx.se/download.html下载了curl的源代码。我尝试按照curl-7.65.1 \ winbuild \ BUILD.WINDOWS.txt]中的说明将其构建为静态库。
我的Visual Studio编译设置为Release和x86
((在上述工作流程中,我还尝试了使用x64进行修改[标记为*]的整个过程。结果是同一种链接器错误)
使用以下示例代码测试卷曲:
#include <stdio.h> #include <iostream> #define CURL_STATICLIB #include "curl/curl.h" int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://google.com"); /* example.com is redirected, so we tell libcurl to follow redirection */ curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); /* 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); } std::cin.get(); }
1 > ------Build started : Project: demoCurl, Configuration : Release Win32------ 1 > Application.cpp 1 > nonblock.obj : error LNK2001 : unresolved external symbol __imp__ioctlsocket@12 1 > nonblock.obj : error LNK2001 : unresolved external symbol __imp__ioctlsocket@12 1 > sendf.obj : error LNK2001 : unresolved external symbol __imp__WSAGetLastError@0 1 > telnet.obj : error LNK2001 : unresolved external symbol __imp__WSAGetLastError@0 1 > tftp.obj : error LNK2001 : unresolved external symbol __imp__WSAGetLastError@0 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__WSAGetLastError@0 1 > asyn - thread.obj : error LNK2001 : unresolved external symbol __imp__WSAGetLastError@0 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__WSAGetLastError@0 1 > ftp.obj : error LNK2001 : unresolved external symbol __imp__WSAGetLastError@0 1 > select.obj : error LNK2001 : unresolved external symbol __imp__WSAGetLastError@0 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__bind@12 1 > ftp.obj : error LNK2001 : unresolved external symbol __imp__bind@12 1 > tftp.obj : error LNK2001 : unresolved external symbol __imp__bind@12 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__closesocket@4 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__connect@12 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__getpeername@12 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__getsockname@12 1 > ftp.obj : error LNK2001 : unresolved external symbol __imp__getsockname@12 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__getsockopt@20 1 > smb.obj : error LNK2001 : unresolved external symbol __imp__htons@4 1 > socks_sspi.obj : error LNK2001 : unresolved external symbol __imp__htons@4 1 > telnet.obj : error LNK2001 : unresolved external symbol __imp__htons@4 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__htons@4 1 > curl_addrinfo.obj : error LNK2001 : unresolved external symbol __imp__htons@4 1 > doh.obj : error LNK2001 : unresolved external symbol __imp__htons@4 1 > ftp.obj : error LNK2001 : unresolved external symbol __imp__htons@4 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__ntohs@4 1 > ftp.obj : error LNK2001 : unresolved external symbol __imp__ntohs@4 1 > socks_sspi.obj : error LNK2001 : unresolved external symbol __imp__ntohs@4 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__recv@16 1 > sendf.obj : error LNK2001 : unresolved external symbol __imp__recv@16 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__setsockopt@20 1 > transfer.obj : error LNK2001 : unresolved external symbol __imp__setsockopt@20 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__socket@12 1 > hostip6.obj : error LNK2001 : unresolved external symbol __imp__socket@12 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__WSASetLastError@4 1 > curl_addrinfo.obj : error LNK2001 : unresolved external symbol __imp__WSASetLastError@4 1 > select.obj : error LNK2001 : unresolved external symbol __imp__WSASetLastError@4 1 > connect.obj : error LNK2001 : unresolved external symbol __imp__WSAIoctl@36 1 > transfer.obj : error LNK2001 : unresolved external symbol __imp__WSAIoctl@36 1 > curl_addrinfo.obj : error LNK2001 : unresolved external symbol __imp__getaddrinfo@16 1 > curl_addrinfo.obj : error LNK2001 : unresolved external symbol __imp__freeaddrinfo@4 1 > curl_gethostname.obj : error LNK2001 : unresolved external symbol __imp__gethostname@8 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptAcquireContextA@20 1 > md5.obj : error LNK2001 : unresolved external symbol __imp__CryptAcquireContextA@20 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CryptAcquireContextA@20 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptReleaseContext@8 1 > md5.obj : error LNK2001 : unresolved external symbol __imp__CryptReleaseContext@8 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CryptReleaseContext@8 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptDestroyKey@4 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptGetHashParam@20 1 > md5.obj : error LNK2001 : unresolved external symbol __imp__CryptGetHashParam@20 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CryptGetHashParam@20 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptImportKey@24 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptEncrypt@28 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptCreateHash@20 1 > md5.obj : error LNK2001 : unresolved external symbol __imp__CryptCreateHash@20 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CryptCreateHash@20 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptHashData@16 1 > md5.obj : error LNK2001 : unresolved external symbol __imp__CryptHashData@16 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CryptHashData@16 1 > curl_ntlm_core.obj : error LNK2001 : unresolved external symbol __imp__CryptDestroyHash@4 1 > md5.obj : error LNK2001 : unresolved external symbol __imp__CryptDestroyHash@4 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CryptDestroyHash@4 1 > ftp.obj : error LNK2001 : unresolved external symbol __imp__accept@12 1 > ftp.obj : error LNK2001 : unresolved external symbol __imp__listen@8 1 > idn_win32.obj : error LNK2001 : unresolved external symbol __imp__IdnToAscii@20 1 > idn_win32.obj : error LNK2001 : unresolved external symbol __imp__IdnToUnicode@20 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_init 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_sslinit 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_unbind_s 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_set_option 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_simple_bind_s 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_bind_s 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_search_s 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_msgfree 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_err2string 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_first_entry 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_next_entry 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_first_attribute 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_next_attribute 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_get_values_len 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_value_free_len 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_get_dn 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ldap_memfree 1 > ldap.obj : error LNK2001 : unresolved external symbol __imp__ber_free 1 > select.obj : error LNK2001 : unresolved external symbol ___WSAFDIsSet@8 1 > select.obj : error LNK2001 : unresolved external symbol __imp__select@20 1 > sendf.obj : error LNK2001 : unresolved external symbol __imp__send@16 1 > telnet.obj : error LNK2001 : unresolved external symbol __imp__send@16 1 > system_win32.obj : error LNK2001 : unresolved external symbol __imp__WSAStartup@8 1 > telnet.obj : error LNK2001 : unresolved external symbol __imp__WSAStartup@8 1 > system_win32.obj : error LNK2001 : unresolved external symbol __imp__WSACleanup@0 1 > telnet.obj : error LNK2001 : unresolved external symbol __imp__WSACleanup@0 1 > tftp.obj : error LNK2001 : unresolved external symbol __imp__recvfrom@24 1 > tftp.obj : error LNK2001 : unresolved external symbol __imp__sendto@24 1 > krb5_sspi.obj : error LNK2001 : unresolved external symbol __imp__htonl@4 1 > krb5_sspi.obj : error LNK2001 : unresolved external symbol __imp__ntohl@4 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CryptGenRandom@12 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CertOpenStore@20 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertOpenStore@20 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CertCloseStore@8 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertCloseStore@8 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CertEnumCertificatesInStore@8 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CertFindCertificateInStore@24 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CertFreeCertificateContext@4 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertFreeCertificateContext@4 1 > schannel.obj : error LNK2001 : unresolved external symbol __imp__CryptStringToBinaryA@28 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertAddCertificateContextToStore@16 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertGetNameStringA@24 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CryptQueryObject@44 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertCreateCertificateChainEngine@8 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertFreeCertificateChainEngine@4 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertGetCertificateChain@32 1 > schannel_verify.obj : error LNK2001 : unresolved external symbol __imp__CertFreeCertificateChain@4 1 > C:\...\demoCurl\Release\demoCurl.exe : fatal error LNK1120 : 72 unresolved externals 1 > Done building project "demoCurl.vcxproj" --FAILED. ========== Build: 0 succeeded, 1 failed, 0 up - to - date, 0 skipped ==========
我无法将libcurl编译为在c ++项目中工作的静态库。构建包含curl的项目会导致链接器错误。我从https://curl.haxx.se / ...]下载了curl的源代码。
我使用以下命令构建nmake /f Makefile.vc mode=static RTLIBCFG=static DEBUG=yes ENABLE_IDN=no ENABLE_SSPI=no
并链接
libcurl_a_debug.lib ws2_32.lib wldap32.lib