Visual Studio(VS2017/VS2019)編譯並配置C/C++-libcurl開發環境

#本文開發環境#
Window 10 x64 Enterprise [10.0.17763.475]
下載地址1:https://msdn.itellyou.cn/
下載地址2:https://msdn.rg-adguard.net/public.php
Visual Studio 2017/2019 Enterprise
下載地址:https://www.visualstudio.com/downloads/
libcurl [7.55.1-7.65.1]
下載地址:https://curl.haxx.se/download.html

【警告】
請確保電腦上沒有安裝2017/2019以外版本的Visual Studio(尤其是2015),否則可能會出現LNK2001錯誤

編譯

  • 理論上官方提供了預編譯包,但是沒研究明白應該怎麼用,有大佬的話麻煩指點一下。

打開上方源碼下載地址,下載最新版的壓縮包。
這裏寫圖片描述
解壓,並進入文件夾,運行buildconf.bat
這裏寫圖片描述
本文以編譯x64爲例
在開始菜單中找到Visual Studio 2017/2019文件夾,編譯64位則右擊x64 Native Tools Command Prompt for VS 2017/2019,編譯32位則右擊x86 Native Tools Command Prompt for VS 2017/2019選擇Run as administrator
這裏寫圖片描述
進入curl文件夾中的winbuild文件夾。
這裏寫圖片描述
VS2017/2019+x64+靜態編譯:
輸入nmake /f Makefile.vc mode=static VC=15 MACHINE=x64 DEBUG=no
如果想使用動態編譯,將mode=static改爲mode=dll。(本文僅教靜態編譯,同時curl官方也不建議使用動態編譯)
如果使用x86,將MACHINE=x64改爲MACHINE=x86
如果需要debug版,將DEBUG=no改爲DEBUG=yes
如果你是VS2017且未更新到最新版,VC=15建議改爲VC=14
更詳細的編譯指令及說明可以打開winbuild文件夾中的BUILD.WINDOWS.txt查看。
這裏寫圖片描述
回車,等待編譯完成,關閉控制檯界面。
打開curl文件夾中的builds文件夾,將名字最短的文件夾備份(如果x64和x86都編譯了,則需要備份兩個名字最短的文件夾),curl文件夾如果無其他需要則可全部刪除。
這裏寫圖片描述
本文將編譯生成的文件夾剪切至其他路徑,以便長期使用。
這裏寫圖片描述

配置工程

新建一個項目。本文選擇新建一個名爲Test的空項目。
這裏寫圖片描述
右擊項目,選擇Properties
這裏寫圖片描述
選擇需要的配置。
下圖爲本文所選擇的ConfigurationsPlatform,請自行根據需要選擇切換。
這裏寫圖片描述
將編譯得到include文件夾和lib文件夾添加至工程。
如果編譯了debug版libcurl,則應將debug文件夾中的內容添加至Configurations: Debug
這裏寫圖片描述
將以下lib添加至工程。

libcurl_a.lib
Ws2_32.lib
Wldap32.lib
winmm.lib
Crypt32.lib
Normaliz.lib

這裏寫圖片描述
本文使用了靜態編譯,所以需要將CURL_STATICLIB添加至工程。
這裏寫圖片描述
本文使用了靜態編譯且沒有編譯debug版libcurl,所以Runtime Library直接選擇了/MD
如果編譯了debug版libcurl,請在Configurations: Debug中使用/MDdConfigurations: Release中使用/MD
如果使用了動態編譯,對應改爲/MTd/MT
這裏寫圖片描述
注意此處設置修改爲和上述設置一致。
這裏寫圖片描述

測試代碼

#include <curl/curl.h>    

int main(int argc, char* argv[]) {
	CURL *curl = 0;
	CURLcode res;
	curl = curl_easy_init();
	if (curl != 0) {
		curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com");
		/* example.com is redirected, so we tell libcurl to follow redirection */
		curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
		/* Perform the request, res will get the return code */
		res = curl_easy_perform(curl);
		/* Check for errors */
		if (res != CURLE_OK) {
			fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
		}
		/* always cleanup */
		curl_easy_cleanup(curl);
	}

	return 0;
}

恕不作答VS2019以外的編譯器如何配置libcurl。

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