CURL開源庫VS2010環境下編譯安裝,配置詳解
html
一 準備
1.1 CURL官網下載地址:http://curl.haxx.se/download.html
1.2 找到源碼包,我這裏下載的是7.32.0版:http://curl.haxx.se/download/curl-7.32.0.zip
二 步驟
2.1
打開curl-7.32.0\vs\vc8\lib\vc8libcurl.vcproj文件,VS會提示升級工程,下一步便可
VC工程裏有些設置問題致使不能直接編譯,須要稍做修改
2.2
打開工程屬性 > C\C++ > 常規 > 附加包含目錄。這裏的包含目錄是"..\include",而這個目錄根本就不存在,它應該指
向"curl-7.32.0\include"纔對,因此把這裏改爲"..\..\..\include"。(或者直接完整路徑也能夠)
2.3打開工程屬性 > C\C++ > 預處理器 > 預處理器定義。這裏有個默認宏"BUILDING_LIBCURL",把它改
成"CURL_STATICLIB"。這樣,那些接口函數就不會被聲明爲導出函數了。
2.4打開工程屬性 > C\C++ > 庫管理器 > 常規 > 附加依賴項。添加ws2_32.lib和wldap32.lib,這是CURL必須依賴的。
2.5.把"libcurl.rc"從工程中移除,它只是版本信息,只會增大文件,去掉!(無所謂)
2.6 可編譯出以下版本,根據須要手動設置編譯
libcurld.lib //debug Multi-threaded (/MT)
libcurl.dll //release Multi-threaded Debug (/MTd)
//以上爲靜態庫版本,生成exe體積大,包含庫。
生成兩種版本的都可。可是鏈接使用的時候注意對應版本。
libcurld.lib //debug Multi-threaded DLL Debug (/MDD)
libcurl.dll //release Multi-threaded DLL (MD)
//以上爲動態庫版本,生成exe體積小,不包含庫。
2.7 而後將其分別放入本身建立一個debug和一個release文件夾內、
例如debug/libcurl.lib release//libcurl.lib
debug/libcurl.dll release//libcurl.dll
注意將其放入C:\curl-7.32.0\curl-7.32.0\lib\目錄裏面
(能夠自定義,只要注意後面庫包含時的變量就能夠了)
2.8 建立兩個環境變量
例如 CURL_INC設置爲C:\curl-7.32.0\curl-7.32.0\include
例如 CURL_LIB設置爲C:\curl-7.32.0\curl-7.32.0\lib
三 結果測試
3.1 而後開始測試如何使用。
爲了測試lib文件,新建一個控制檯程序,
打開工程屬性 > C\C++ > 常規 >包含頭文件$(CURL_INC)
打開工程屬性 > C\C++ > 常規 >包含庫文件$(CURL_LIB)\debug
(此處注意debug和release不一樣,以避免影響後期工程調試)
3.2
打開工程屬性 > C\C++ > 預處理器 > 預處理器定義。添加"CURL_STATICLIB"。
curl
這樣,那些接口函數就不會被聲明爲導出函數了函數
3.3 添加依賴庫文件測試
3.4 找個自帶的例子測試 /docs/examples/simple.c源文件
url
[cpp] view plaincopyprint?spa
#include "stdafx.h" .net
#include <stdio.h> debug
#include <curl/curl.h> 調試
#pragma comment(lib,"libcurl.lib") code
int _tmain(int argc, _TCHAR* argv[])
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://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;
}
3.5 實例測試結果