VS整合libcurl時遇到的問題總結

2021-10-18 23:17:19 字數 2935 閱讀 2945

libcurl作為乙個優秀的網路庫,經常被整合到工程中。記錄一下在vs中整合libcurl出現了問題,之所以需要單獨記錄,是因為問題比較多,⊙﹏⊙b汗!

注:這些問題的方案大都來自其他博主,在此彙總記錄。

首先的問題是libcurl的配置,當然,這其實也不能算是個問題:工程配置中新增標頭檔案和lib檔案的引用

標頭檔案:專案右鍵--》屬性--》配置屬性--》c/c++--》附件包含目錄

error lnk2001: 無法解析的外部符號 __imp_curl_easy_perform

error lnk2001: 無法解析的外部符號 __imp_curl_easy_init

error lnk2001: 無法解析的外部符號 __imp_curl_slist_free_all

error lnk2001: 無法解析的外部符號 __imp_curl_easy_cleanup

error lnk2001: 無法解析的外部符號 __imp_curl_easy_setopt

解決方案:加入預編譯選項:專案右鍵--》屬性--》配置屬性--》c/c++--》預處理器--》預處理器,把 building_libcurl或curl_staticlib

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_init

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_unbind_s

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_set_option

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_******_bind_s

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_search_s

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_msgfree

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_err2string

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_first_entry

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_next_entry

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_first_attribute

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_next_attribute

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_get_values_len

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_value_free_len

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_get_dn

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ldap_memfree

1>libcurl.lib(ldap.obj) : error lnk2001: 無法解析的外部符號 __imp_ber_free

解決方案:給工程新增依賴的庫:專案右鍵--》屬性--》配置屬性--》鏈結器--》輸入--》附件依賴項,把 ws2_32.lib、 winmm.lib、 wldap32.lib新增進去

這兩個問題的解決方案是參考部落格:感謝博主

1>libeay32mdd.lib(e_capi.obj) : error lnk2001: 無法解析的外部符號__imp__certgetcertificatecontextproperty@16

1>libeay32mdd.lib(e_capi.obj) : error lnk2001: 無法解析的外部符號 __imp__certopenstore@20

1>libeay32mdd.lib(e_capi.obj) : error lnk2001: 無法解析的外部符號 __imp__certclosestore@8

1>libeay32mdd.lib(e_capi.obj) : error lnk2001: 無法解析的外部符號 __imp__certenumcertificatesinstore@8

1>libeay32mdd.lib(e_capi.obj) : error lnk2001: 無法解析的外部符號 __imp__certfreecertificatecontext@4

1>libeay32mdd.lib(e_capi.obj) : error lnk2001: 無法解析的外部符號 __imp__certfindcertificateinstore@24

1>libeay32mdd.lib(e_capi.obj) : error lnk2001: 無法解析的外部符號 __imp__certduplicatecertificatecontext@4

參考部落格:

winsock.h和winsock2.h衝突問題:

解決方案:加入預編譯選項:專案右鍵--》屬性--》配置屬性--》c/c++--》預處理器--》預處理器,把win32_lean_and_mean加進去

解決使用 libcurl 遇到的多執行緒崩潰問題

使用 curl 訪問 http 鏈結時,用 easy handle,阻塞方式訪問時發現會每個訪問啟動乙個執行緒去進行dns 想減少這種消耗,故此採用了 sh curl share init curl share setopt sh,curlshopt share,curl lock data dns...

VS2015建立鍊錶時使用scanf遇到的問題

建立鍊錶遇到的第乙個問題 使用vs2015寫 錯誤 scanf s d d s p new num,p new score,p new name 此時會報錯 0x7be10b5c ucrtbased.dll 處 位於 鍊錶.exe 中 引發的異常 0xc0000005 寫入位置 0x00511000...

整合友盟遇到的問題

1.解決方法 這個問題是由於友盟不支援 armv7s。得移出armv7s,然後在other linker flags 中新增 objc就可以了 armv7s代表iphone5。在project build setting,然後把build active architecture only的值設定為y...