參考: https://blog.csdn.net/cym1990/article/details/79851039
編譯
- 從https://github.com/curl/curl下載下傳源碼,這裡我們選擇的是curl-7_65_2;
- 進入到下載下傳的源碼檔案夾中,輕按兩下buildconf.bat檔案運作;
- 進入curl檔案夾中的“winbuild”檔案夾,并複制其檔案夾路徑,例如:E:\xxxxxxxxxx\curl-curl-7_65_2\winbuild;
- 打開開始菜單,在vs2013下的Visual Studio Tools中,(若要編譯64位)選擇"适用于 VS 2017 的 x64 本機工具指令提示",(若要編譯32位)選擇"适用于 VS 2017 的 x86 本機工具指令提示",右鍵以管理者身份運作,這裡我們選擇編譯32位的;
- 進入vs2013 x86本機工具到指令行中,輸入指令: cd /d E:\xxxxxxxxxx\curl-curl-7_65_2\winbuild,進入到此目錄;
- 輸入編譯指令: nmake /f Makefile.vc mode=static VC=12 MACHINE=x86 然後回車,等待編譯完成;
- 編譯完成後,在build目錄下生成相應庫檔案,庫檔案包括include、lib、bin三個目錄。
注,這裡我們編譯的是32位的靜态庫,release版本。
- 若要編譯動态庫,将“mode=static”改為“mode=dll”。
- 若需要編譯debug版,将“DEBUG=no”改為“DEBUG=yes”,DEBUG項未設定時預設為release版本。
- 若需要編譯64位版本,将“MACHINE=x86”改為“MACHINE=x64”。
- 若要使用其他版本Visual Studio進行編譯,“VC=”後面的數字應該改為該Visual Studio版本。
建立工程進行測試
建一個空的工程,添加如下代碼:
#include "include/curl/curl.h"
int main()
{
curl_easy_init();
return 0;
}
并将編譯生成的檔案夾中的“include”檔案夾和“lib”檔案夾添加至工程。
将靜态庫“libcurl_a.lib”添加至工程。
由于我們是靜态編譯libcurl,需将“CURL_STATICLIB”添加至工程的預進行中。
可能遇到的錯誤及解決方法:
錯誤一: 無法解析的外部符号 __imp__curl_easy_init
libcurl沒有連結到程式中,找不到這個函數入口。
解決方案:打開項目屬性,配置屬性 - C/C++ - 預處理器 - 預處理器定義 - 打開下拉框 - 編輯 - 文本框輸入CURL_STATICLIB - 儲存
(或者在curl.h中#define CURL_STATICLIB)
錯誤二: 無法解析的外部符号 [email protected]
解決方法:在 項目屬性 - 連結器 - 輸入 - 附加依賴項 中加入: Crypt32.lib 即可。
錯誤三: 無法解析的外部符号 [email protected]
解決方法:在 項目屬性 - 連結器 - 輸入 - 附加依賴項 中加入:Normaliz.lib 即可。
錯誤四: 無法解析的外部符号 [email protected]
無法解析的外部符号 __imp__ldap_init
解決方法:在 項目屬性 - 連結器 - 輸入 - 附加依賴項 中加入:ws2_32.lib,wldap32.lib 即可。
參考:https://blog.csdn.net/px41834/article/details/81627170