一、下載最新版本libcurl
https://curl.haxx.se/libcurl/
二、編譯
解壓進入curl-curl-7_59_0\winbuild\下
靜態庫,debug
nmake /f Makefile.vc mode=static VC=14 DEBUG=yes MACHINE=x86
靜態庫,release
nmake /f Makefile.vc mode=static VC=14 MACHINE=x86
在build目錄下生成庫文件include lib bin
三、新建工程進行測試
建一個空的工程,添加如下代碼:
#include "include/curl/curl.h"
int main()
{
curl_easy_init();
return 0;
}
報錯:
1、error LNK2019: 無法解析的外部符號 __imp__curl_easy_init,該符號在函數 _main 中被引用
fatal error LNK1120: 1 個無法解析的外部命令
libcurl沒有鏈接到程序中,找不到這個函數入口
解決方案:打開項目屬性,配置屬性 - C/C++ - 預處理器 - 預處理器定義 - 打開下拉框 - 編輯 - 文本框輸入CURL_STATICLIB - 保存(或者在curl.h中#define CURL_STATICLIB)
2、error LNK2019: 無法解析的外部符號 __imp__SetDIBitsToDevice@48
解決方法:
(1)給工程添加依賴庫:項目->屬性->鏈接器->輸入->附加依賴項,ws2_32.lib;winmm.lib;wldap32.lib添加進去。
(2)加入預編譯選項,項目->屬性->c/c++ ->預處理器->預處理器定義,把;BUILDING_LIBCURL;HTTP_ONLY添加進去,注意分號。
3、無法解析的外部符號 __imp__CertOpenStore@20
解決方法:在 項目屬性 - 鏈接器 - 輸入 - 附加依賴項 中加入: Crypt32.lib 即可。
4、無法解析的外部符號 __imp__IdnToAscii@20
解決方法:在 項目屬性 - 鏈接器 - 輸入 - 附加依賴項 中加入:Normaliz.lib 即可。