1.下載最新版的libcurl,並解壓。(本例以vs2013 + curl-7.52.1.zip為例)
2.打開VS2013 開發人員命令提示,並CD進入 curl-curl-7_52_1/winbuild/ 目錄
VS生成代碼的時候有一個運行庫選項(項目屬性 - 配置屬性 - C/C++ - 代碼生成 - 運行庫)/MT和/MD(/MTd和/MDd是對應的debug版本)
就是說你編譯時如果加了RTLIBCFG=static這個選項,就相當於編譯了/MT版本的libcurl,否則是/MD版本的
nmake /f Makefile.vc mode=static VC=12 RTLIBCFG=static
完成編譯后libcurl靜態庫會出現在builds目錄下包括頭文件和libcurl_a.lib,我們需要的是builds/libcurl-vc12-x86-release-static-ipv6-sspi-winssl下面的include和lib兩個文件夾
3.測試
項目->屬性->c/c++ ->代碼生成->運行庫->/MT
// curl_test.cpp : 定義控制台應用程序的入口點。
#define CURL_STATICLIB
#include <iostream>
#include <curl.h>
#pragma comment(lib, "libcurl_a.lib")
using namespace std;
/**
* 一旦curl接收到數據,就會調用此回調函數
* buffer:數據緩沖區指針
* size:調試階段總是發現為1
* nmemb:(memory block)代表此次接受的內存塊的長度
* userp:用戶自定義的一個參數
*/
size_t write_data(void* buffer, size_t size, size_t nmemb, void* userp)
{
static int current_index = 0;
cout << "current:" << current_index++;
cout << (char*)buffer;
cout << "---------------" << endl;
int temp = *(int*)userp; // 這里獲取用戶自定義參數
return nmemb;
}
int main()
{
curl_global_init(CURL_GLOBAL_ALL); // 首先全局初始化CURL
CURL* curl = curl_easy_init(); // 初始化CURL句柄
if (NULL == curl)
{
return 0;
}
int my_param = 1; // 自定義一個用戶參數
// 設置目標URL
curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
// 設置接收到HTTP服務器的數據時調用的回調函數
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
// 設置自定義參數(回調函數的第四個參數)
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &my_param);
// 執行一次URL請求
CURLcode res = curl_easy_perform(curl);
// 清理干凈
curl_easy_cleanup(curl);
return 0;
}
配置選項:
nmake /f Makefile.vc mode=<static or dll> <options>
where <options> is one or many of:
VC=<6,7,8,9,10,11,12,14> - VC versions
WITH_DEVEL=<path> - Paths for the development files (SSL, zlib, etc.)
Defaults to sibbling directory deps: ../deps
Libraries can be fetched at http://windows.php.net/downloads/php-sdk/deps/
Uncompress them into the deps folder.
WITH_SSL=<dll or static> - Enable OpenSSL support, DLL or static
WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static
WITH_CARES=<dll or static> - Enable c-ares support, DLL or static
WITH_ZLIB=<dll or static> - Enable zlib support, DLL or static
WITH_SSH2=<dll or static> - Enable libSSH2 support, DLL or static
ENABLE_SSPI=<yes or no> - Enable SSPI support, defaults to yes
ENABLE_IPV6=<yes or no> - Enable IPv6, defaults to yes
ENABLE_IDN=<yes or no> - Enable use of Windows IDN APIs, defaults to yes
Requires Windows Vista or later, or installation from:
https://www.microsoft.com/downloads/details.aspx?FamilyID=AD6158D7-DDBA-416A-9109-07607425A815
ENABLE_WINSSL=<yes or no> - Enable native Windows SSL support, defaults to yes
GEN_PDB=<yes or no> - Generate Program Database (debug symbols for release build)
DEBUG=<yes or no> - Debug builds
MACHINE=<x86 or x64> - Target architecture (default is x86)
精簡配置
nmake /f Makefile.vc mode=static VC=12 RTLIBCFG=static ENABLE_IPV6=no ENABLE_WINSSL=no ENABLE_SSPI=no