libcurl 靜態庫編譯


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM