curl 64位編譯靜態庫使用報2019鏈接錯誤問題

一、下載最新版本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 即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章