天天看點

VS2013(通過Visual Studio Tools)編譯libcurl庫編譯建立工程進行測試

參考: https://blog.csdn.net/cym1990/article/details/79851039

編譯

  1. 從https://github.com/curl/curl下載下傳源碼,這裡我們選擇的是curl-7_65_2;
  2. 進入到下載下傳的源碼檔案夾中,輕按兩下buildconf.bat檔案運作;
  3. 進入curl檔案夾中的“winbuild”檔案夾,并複制其檔案夾路徑,例如:E:\xxxxxxxxxx\curl-curl-7_65_2\winbuild;
  4. 打開開始菜單,在vs2013下的Visual Studio Tools中,(若要編譯64位)選擇"适用于 VS 2017 的 x64 本機工具指令提示",(若要編譯32位)選擇"适用于 VS 2017 的 x86 本機工具指令提示",右鍵以管理者身份運作,這裡我們選擇編譯32位的;
  5. 進入vs2013 x86本機工具到指令行中,輸入指令: cd  /d   E:\xxxxxxxxxx\curl-curl-7_65_2\winbuild,進入到此目錄;
  6. 輸入編譯指令: nmake /f Makefile.vc mode=static VC=12  MACHINE=x86   然後回車,等待編譯完成;
  7. 編譯完成後,在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

繼續閱讀