Windows下編譯並使用libcurl(curl:http客戶端庫c++版本)

2018年08月13日 11:44:30html

閱讀數:1 編輯c++

http://www.roselady.vip/a/cangjingge/boke/2018/0813/716.html curl

1、下載最新版本libcurl
https://curl.haxx.se/libcurl/   

2、編譯

解壓進入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

3、新建工程進行測試
 
建一個空的工程,添加以下代碼:

#include "include/curl/curl.h"  
 
int main()  
{  
    curl_easy_init();  
    return 0;  
}  

報錯:
一、error LNK2019: 沒法解析的外部符號 __imp__curl_easy_init,該符號在函數 _main 中被引用

fatal error LNK1120: 1 個沒法解析的外部命令

libcurl沒有連接到程序中,找不到這個函數入口

解決方案:打開項目屬性,配置屬性 - C/C++ - 預處理器 - 預處理器定義 - 打開下拉框 - 編輯 - 文本框輸入CURL_STATICLIB - 保存(或者在curl.h中#define CURL_STATICLIB)
 函數

二、error LNK2019: 沒法解析的外部符號 __imp__SetDIBitsToDevice@48

解決方法:
(1)給工程添加依賴庫:項目->屬性->連接器->輸入->附加依賴項,ws2_32.lib;winmm.lib;wldap32.lib添加進去。
(2)加入預編譯選項,項目->屬性->c/c++ ->預處理器->預處理器定義,把;BUILDING_LIBCURL;HTTP_ONLY添加進去,注意分號。

三、沒法解析的外部符號 __imp__CertOpenStore@20post

解決方法:在 項目屬性 - 連接器 - 輸入 - 附加依賴項 中加入: Crypt32.lib 便可。

四、沒法解析的外部符號 __imp__IdnToAscii@20

解決方法:在 項目屬性 - 連接器 - 輸入 - 附加依賴項 中加入:Normaliz.lib 便可。


附件爲測試工程(包含已編譯好的庫)https://download.csdn.net/download/px41834/10600191測試

相關文章
相關標籤/搜索