博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
libcurl 静态库编译
阅读量:5273 次
发布时间:2019-06-14

本文共 3047 字,大约阅读时间需要 10 分钟。

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 
#include
#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=
where
is one or many of: VC=<6,7,8,9,10,11,12,14> - VC versions WITH_DEVEL=
- 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=
- Enable OpenSSL support, DLL or static WITH_MBEDTLS=
- Enable mbedTLS support, DLL or static WITH_CARES=
- Enable c-ares support, DLL or static WITH_ZLIB=
- Enable zlib support, DLL or static WITH_SSH2=
- Enable libSSH2 support, DLL or static ENABLE_SSPI=
- Enable SSPI support, defaults to yes ENABLE_IPV6=
- Enable IPv6, defaults to yes ENABLE_IDN=
- 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=
- Enable native Windows SSL support, defaults to yes GEN_PDB=
- Generate Program Database (debug symbols for release build) DEBUG=
- Debug builds MACHINE=
- Target architecture (default is x86)

精简配置

nmake /f Makefile.vc mode=static VC=12 RTLIBCFG=static ENABLE_IPV6=no ENABLE_WINSSL=no ENABLE_SSPI=no

转载于:https://www.cnblogs.com/jkcx/p/6406706.html

你可能感兴趣的文章
SuperSocket 学习
查看>>
给培训学校讲解ORM框架的课件
查看>>
此实现不是 Windows 平台 FIPS 验证的加密算法的一部分
查看>>
性能调优攻略
查看>>
线段树模板讲解
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
docker overlay网络实现
查看>>
2019-8-5 考试总结
查看>>
jquery javascript 回到顶部功能
查看>>
JS中实现字符串和数组的相互转化
查看>>
用格式工厂将mts文件转换成其它格式flv,mpg失败
查看>>
web service和ejb的区别
查看>>
Silverlight StoryboardManager 故事板管理类
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
CS61A Efficiency 笔记
查看>>
ArcGIS Server Javascript 多图对比功能
查看>>
c#实现把异常写入日志示例(异常日志)
查看>>
函数的进阶
查看>>
对百度杀毒软件的评价
查看>>