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相关推荐

  1. VC++中的char,wchar_t,TCHAR(转载)

    VC++中的char,wchar_t,TCHAR 大家一起做一个项目,经常发现有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,这个问题曾经搞的很混乱.为了统一,有必要把来龙去脉搞 ...

  2. 基于 Docker Compose 实践 .NET Core 的现代化架构 2:在容器中集成 Skywalking APM

    本章节代码已经上传至 https://github.com/siegrainwong/.NET-Core-with-Docker/tree/master/Part2 系列大纲 还是先介绍一下目录,这次 ...

  3. VC中使用ADO的方法

    ADO中打开一个连接: pConnection->ConnectionString = "这里的字符串有下面四种写法"; //对连接字符串赋值 pConnection-> ...

  4. VC++中文件类型小结

    为什么80%的码农都做不了架构师?>>>    .dsw---- 这种类型的文件在VC中是级别最高的,称为Workspace文件   .dsp---- 在VC中,应用程序是以Proj ...

  5. 圆弧的函数c语言,VC++中Arc函数画圆弧

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:VC++中Arc函数画圆弧回答:BOOL Arc(int x1,int y1,int x2,int y2,int x3,int y3 ...

  6. VC中自定义IE浏览器

    VC中自定义IE浏览器 http://www.5xsoft.com/Article.aspx?id=155 本教程提供了自定义浏览器控件的行为和外观的一些方法.你将看到高级的宿主接口, IDocHos ...

  7. 演练VC中的common一族

    1.表头控制 Header Control 2.图像列表控制 Image List 3.列表控制和视 List Control&List View 4.树控制和视 Tree Control&a ...

  8. Elasticsearch实践(二)在Springboot微服务中集成搜索服务

    关于如何用Docker搭建Elasticsearch集群环境可以参考前一篇:Elasticsearch实践(一)用Docker搭建Elasticsearch集群.本文主要介绍,如果在Springboo ...

  9. vc中的rc和rc2的区别

    rc和rc2都是资源文件,包含了应用程序中用到的所有的资源. 两者不同在于:rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改; 而rc2中的资源不能在VC的集成环境下直接进行编辑和 ...

最新文章

  1. Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaSelector
  2. R学习笔记之五:数据操作
  3. futurejava前台_web前端页面与后端Java的数据交互
  4. perl malformed JSON string, neither tag, array, object, number, string or atom, at character offset
  5. 《XNA高级编程:Xbox 360和Windows》1-2
  6. C语言删掉无关变量无输出,C语言变量类型与输出控制用法实例教程
  7. SQL一些时间格式的转换
  8. 交换机 链路层无法udp通讯_一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题...
  9. 累斗累---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十)
  10. windowskb2685811补丁_关于Win7/8.1 KB2685811、KB2685813和KB2670838蓝屏补丁下载汇总
  11. proteus仿真Arduino
  12. 基于java的毕业设计选题题目推荐
  13. jarvisoj_typo
  14. P1252 马拉松接力赛
  15. mac上好用的文档转换器Doxillion Plus
  16. 细说MATLAB中的MAX函数 (翻译Help文档而来)
  17. 小程序动态图片加载失败替换本地图片
  18. 【Python】Python之禅
  19. 内部揭秘:《经济学人》图表原来是用这些工具制作的
  20. java char是否为数字_java判断字符是否为数字

热门文章

  1. tsd3dmapper软件使用方法_mybatis-plus的使用 ------ 入门
  2. [leetcode]136. 只出现一次的数字
  3. 栈的链式存储框架搭建
  4. 基于关系域演算的QBE语言
  5. 数据库、数据库系统、数据库管理系统
  6. bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换)
  7. bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊(分块)
  8. 瞎扯系列:判断NPN及PNP管型之右手定则
  9. web`2019.2.28~MY g~
  10. Selenium基础篇之5-第一个完整的自动化测试脚本