在VC中集成cURL
libcurl 库的代码是完全开源的,但是我们一般不会在项目中直接引入它的源代码,而是通过动态链接库隐式链接的方式引入 libcrul 库。也就是说,我们需要在自己的项目中引入 libcrul 相关的三类文件:.lib(导出函数)、.dll 和 .h。
要得到这些文件有两种方式:
方式一,也是推荐优先尝试的做法,到官网下载页面上根据自己的项目开发环境,下载对应的已经编译好的 libcurl 库文件;
方式二,还是到官网下载页面上,下载整个 libcurl 库的源代码自行编译,得到需要的文件。
官网首页:http://curl.haxx.se
官网下载页面:http://curl.haxx.se/download.html
下面分别描述一下两种方式的优缺点和操作步骤。
方式一:到官网下载页面下载对应的已经编译好的 libcurl 库文件
方式一的优点是操作简单,拿来主义,把下载好的压缩包一解压,复制粘贴就可以直接用了。缺点是官网上所提供的这种由第三方开发者编译好的库文件,估计也是热心网友或者开源项目组成员好心上传上去的,因此它们与 libcurl 库未必是同步更新的,比如 2012 年六一儿童节当天,我在官网上下载的 Win32 - MSVC 编译生成库对应的 libcurl 版本是 7.25.0,而最新的 libcurl 版本已经更新到了 7.26.0。另外还有个比较坑爹的地方是,这些由第三方开发者自行编译上传的库文件,质量参差不齐,我就试过引入某个版本的库文件之后,导致自己的程序运行时发生 Crash。
操作步骤:
(1) 进入官网下载页面
(2) 在右侧选择要使用 libcurl 的开发环境
(3) 选择适合的编译生成库
我正在的开发的这个项目主要是使用 libcurl 来做一些腾讯微博开放平台的 API 调用(基于 HTTP),并不需要使用到 SSL 传输(比如 HTTPS和FTPS),所以我选择的是不带 SSL 支持编译的版本。
方式二:到官网下载页面下载整个 libcurl 库的源代码自行编译,得到需要的文件
方式二的优点是你想怎么着都行,缺点是操作比较繁琐。libcurl 是可以定制编译的,你可以根据实际需要是否支持某些特性,但这也带来了操作上的麻烦。比如说如果你开启了 OpenSSL 支持,那你就需要先自行引入 OpenSSL 这个第三方库,才能开始 libcurl 的编译,又比如你开启了 ZLib 支持,那你又必须先搞定 ZLib 这个第三方库。
实际操作的时候,你会发现像 OpenSSL 和 ZLib 这些第三方库的编译又是一件非常繁琐的事情。所以下面我只谈 libcurl 的编译。
你可以直接用 Visual Studio 编译 libcurl
如果不需要zlib跟OpenSSL,下载完整的 libcurl 代码库之后,直接用 Visual Studio 打开自带的 vc6curl.dsw 打开编译就可以了。
使用 VC6 编译的时候可能会遇到下面这个错误提示,这是因为 VC6 默认安装的 Platfomr SDK 比较老:
fatal error C1189: #error : MSVC 6.0 requires "February 2003 Platform SDK" a.k.a. "Windows Server 2003 PSDK"
可以通过 ALLOW_MSVC6_WITHOUT_PSDK 这个编译宏来屏蔽强制使用 February 2003 Platform SDK 编译,步骤如下:
- 在 VC6 的主菜单选择 Project->Settings... 调出工程设置窗口;
- 在 Settings For 中选择 All Configurations;
- 在 C/C++ 标签页的 Category 中选择 General,在 Preprocessor definitions 中追加 ALLOW_MSVC6_WITHOUT_PSDK。
你还可以用命令行来编译 libcurl
这个在“代码包根目录\winbuild\BUILD.WINDOWS.txt” 里面有很详细的说明。值得一提的是,BUILD.WINDOWS.txt 中对 USE_SSPI 编译选项的描述有误,多了一个 S。
USE_SSSPI=<yes or no> - Enable SSPI support, default to yes
以 VS2010 为例说明命令行编译的步骤:
- 调出命令行窗口,Windows 开始菜单 -> 所有程序 -> Microsoft Visual Studio 2010 -> Visual Studio Tools -> Visual Studio Command Prompt (2010)
- 进入代码包中的 winbuild 目录
- 输入编译命令行: nmake /f Makefile.vc mode=dll VC=10 USE_SSPI=no USE_IPV6=no USE_IDN=no GEN_PDB=no DEBUG=no
- 编译完毕之后,进入以下路径“\builds\libcurl-release-dll”即可得到我们需要 .lib、.dll 和 .h 文件。
转载于:https://www.cnblogs.com/duxiuxing/p/2528858.html
在VC中集成cURL相关推荐
- VC++中的char,wchar_t,TCHAR(转载)
VC++中的char,wchar_t,TCHAR 大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱.为了统一,有必要把来龙去脉搞 ...
- 基于 Docker Compose 实践 .NET Core 的现代化架构 2:在容器中集成 Skywalking APM
本章节代码已经上传至 https://github.com/siegrainwong/.NET-Core-with-Docker/tree/master/Part2 系列大纲 还是先介绍一下目录,这次 ...
- VC中使用ADO的方法
ADO中打开一个连接: pConnection->ConnectionString = "这里的字符串有下面四种写法"; //对连接字符串赋值 pConnection-> ...
- VC++中文件类型小结
为什么80%的码农都做不了架构师?>>> .dsw---- 这种类型的文件在VC中是级别最高的,称为Workspace文件 .dsp---- 在VC中,应用程序是以Proj ...
- 圆弧的函数c语言,VC++中Arc函数画圆弧
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:VC++中Arc函数画圆弧回答:BOOL Arc(int x1,int y1,int x2,int y2,int x3,int y3 ...
- VC中自定义IE浏览器
VC中自定义IE浏览器 http://www.5xsoft.com/Article.aspx?id=155 本教程提供了自定义浏览器控件的行为和外观的一些方法.你将看到高级的宿主接口, IDocHos ...
- 演练VC中的common一族
1.表头控制 Header Control 2.图像列表控制 Image List 3.列表控制和视 List Control&List View 4.树控制和视 Tree Control&a ...
- Elasticsearch实践(二)在Springboot微服务中集成搜索服务
关于如何用Docker搭建Elasticsearch集群环境可以参考前一篇:Elasticsearch实践(一)用Docker搭建Elasticsearch集群.本文主要介绍,如果在Springboo ...
- vc中的rc和rc2的区别
rc和rc2都是资源文件,包含了应用程序中用到的所有的资源. 两者不同在于:rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改; 而rc2中的资源不能在VC的集成环境下直接进行编辑和 ...
最新文章
- Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaSelector
- R学习笔记之五:数据操作
- futurejava前台_web前端页面与后端Java的数据交互
- perl malformed JSON string, neither tag, array, object, number, string or atom, at character offset
- 《XNA高级编程:Xbox 360和Windows》1-2
- C语言删掉无关变量无输出,C语言变量类型与输出控制用法实例教程
- SQL一些时间格式的转换
- 交换机 链路层无法udp通讯_一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题...
- 累斗累---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十)
- windowskb2685811补丁_关于Win7/8.1 KB2685811、KB2685813和KB2670838蓝屏补丁下载汇总
- proteus仿真Arduino
- 基于java的毕业设计选题题目推荐
- jarvisoj_typo
- P1252 马拉松接力赛
- mac上好用的文档转换器Doxillion Plus
- 细说MATLAB中的MAX函数 (翻译Help文档而来)
- 小程序动态图片加载失败替换本地图片
- 【Python】Python之禅
- 内部揭秘:《经济学人》图表原来是用这些工具制作的
- java char是否为数字_java判断字符是否为数字
热门文章
- tsd3dmapper软件使用方法_mybatis-plus的使用 ------ 入门
- [leetcode]136. 只出现一次的数字
- 栈的链式存储框架搭建
- 基于关系域演算的QBE语言
- 数据库、数据库系统、数据库管理系统
- bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换)
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊(分块)
- 瞎扯系列:判断NPN及PNP管型之右手定则
- web`2019.2.28~MY g~
- Selenium基础篇之5-第一个完整的自动化测试脚本