librdkafka使用VS2015进行编译
抄了那么久的《kafka权威指南》,开始实操了,按照书本的介绍,kafka本身提供针对Java的原生API,其它语言如果需要使用kafka,那么就需要通过第三方库来做了,对了再书中一直提及的kafka官方文档,在网站中的DOCUMENTATION里。在kafka的官网上找到Clients,点击进入,此页介绍了一下各语言的推荐库,如下:


好了,接下来要做的事情就是点击C++那一项,到页面指示的网址去下载库即可。官方网站上一共推荐了5种C++库,本次试验 选择librdkafka,因为它支持的kafka版本比较多。
1.下载librdkafka库的源码,并在windows系统下进行编译(使用VS2015)
librdkafka的API文档地址:https://docs.confluent.io/2.0.0/clients/librdkafka/dir_b60aae235eacf49413d63ea05b937558.html。在librdkafka库的下载页有对应的编译要求,如下图所示:(我在这篇文章里讲的是编译为64位的库,编译32位库也可以按照这个步骤进行操作,但对应的软件要安装成32位的,下载地址是:https://github.com/edenhill/librdkafka)


注:将源码包解压后可以找到win32文件夹,这里面就是VS的解决方案(.sln文件 sln:solutions),但是现在还无法编译,因为它需要依赖openssl。
下载源码的时候注意一下分支的选择:

选择release,一般master分支是正在开发中的分支,里面可能会有一些bug或者未经过测试的新代码。在正式使用或者研究的时候使用release下的源码包即可。
1.下载并安装ActivePerl,下载地址:https://www.activestate.com/activeperl,安装后可以执行perl命令即可,这个在接下来编译openssl的时候会用到

安装完后,在Perl的安装目录下的eg文件夹里(我的是:C:\Perl64\eg)打开windows的命令行工具,如果出现下图,说明你的Perl是安装成功的。因为openssl的配置是用Perl写的。

或者cmd,在命令行中输入perl -v,如下图则表示安装成功:

2.安装dmake,如果没有dmake的话,编译openssl会提示你的机器没有安装dmake。
dmake、cmake、nmake、gmake、make。
gmake:就是linux下的GNU make,gmake是GNU make在其它操作系统下的移植版,但是别的平台上,一般make这个名字被占用了,所以就起了个gmake的名字。windows下自带的make叫做nmake。如果你使用nmake的时候,发现命令行提示nmake不是内部命令,那么需要添加环境变量,环境变量是 :VS的安装目录/VC/bin。
dmake是一款跨平台的编译工具。dmake是一款与GNU make类似的编译工具,Dmake是同GNU Make类似的一个工具。其命令格式自成一体,但是可以适用于Linux, Solaris, and Win32 and other platforms。Dmake有一个变种,被OpenOffice.org使用。dmake 是一个命令行工具,与 make(1) 兼容。dmake 能够以网格、分布、并行或串行模式生成目标。如果使用的是标准 make(1) 实用程序,在对 makefile 进行任何更改时可以毫不费力地过渡到使用 dmake。dmake 是 make 实用程序的超集。
cmake是另一款跨平台的编译工具。 Visual Studio 的 .sln,Xcode 的 .xcodebuild 文件,依赖现有编译工具 (make, nmake, vcbuild, xcodebuild) 来编译。
在windows下安装dmake工具:

图 VS2015 命令行工具
打开图中的VS2015开发人员命令提示,进入VS的命令行工具,然后执行命令:ppm install dmake。如果出现如下错误:ppm install failed: DBD::SQLite::db selectrow_array failed: database disk image is malformed,那么删除路径:C:\Users\Admin\AppData\Local\ActiveState\ActivePerl 下的文件(和ppm有关的文件)即可。

如上图,第一次安装dmake失败,经过上面讲的处理方式处理之后,安装成功。
要编译openssl源码的话,建议详细阅读源码包里的INSTALL文件。
3.下载并安装64位的openssl。(因为本次的目的仅是为了编译librdkafka,而不是做基于openssl的开发,所以就先下载个安装版的,进行安装,下载地址:http://slproweb.com/products/Win32OpenSSL.html)

所以看东西要认真啊,虽然网站地址上写明的是Win32Openssl,但是这个站点是有Win64Openssl下载的。这个站点并不是openssl官方提供的。
开始安装openssl。开始下载的是最新的版本:Win64OpenSSL-1.1.1,但是安装完后,发现lib文件夹里没有编译librdkafka需要的lib,所以换了一个,下载了Win64OpenSSL-v_1.0.2p。图片中的选项要注意下,别选错了,待会编译librdkafka的时候会用到。

安装成功之后,可以看到目录结构如下:

然后在lib文件夹里就有你编译librdkafka时需要用到的lib。
4.编译librdkafka。我下载的是master分支。
解压后,文件夹树结构如下:

然后打开win32文件夹,打开解决方案,剩下的就是你很熟悉的配置附加库路径的事情了……



编译的时候先编译librdkafka。然后再编译其他的。编译的结果默认是动态库,你要是想使用静态库也可以修改。
到了这一步库的编译过程就结束了。如下图:

头文件的话,在你的工程里需要引入的头文件有一个:rdkafkacpp.h。然后编译动态库生成的dll还有对应的lib文件,这个也是需要引入你的工程里的,它不是我们通常讲的静态库文件,只是编译器在编译阶段会用到它们。
librdkafka使用VS2015进行编译的更多相关文章
- vs2015下编译免费开源的jpeg库,ijg的jpeg.lib
vs2015下编译免费开源的jpeg库,ijg的jpeg.lib 1. 去Independent JPEG Group官网www.ijg.org下载jpegsrc,我下载的版本是jpegsrc9c.z ...
- VS2015 dlib编译 x64 Release .lib生成
VS2015 dlib编译 x64 Release >------ 已启动生成: 项目: ZERO_CHECK, 配置: Release x64 ------ > Checking Bui ...
- VS2015 dlib编译 x64 Debug .lib生成
VS2015 dlib编译 x64 Debug >------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug x64 ------ > Checking Build S ...
- [libpng]CMake+VS2015下编译libpng,及使用小例
编译前的工作 在编译libpng前,需要把zlib编译好,并加载到编译环境里. CMake + VS2015 下编译zlib,及使用小例 下载与解压 libpng的官网是 http://www.lib ...
- 关于VS2015支持编译Linux程序的问题
现状 目前已经发布的VS2015中包括VS2015 Preview 以及 VS2015 CTP6,这两个版本均不支持直接编译C++代码为Linux程序,具体情况可以参考 Visual Studio 2 ...
- VS2015下编译64位GDAL总结
使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...
- Win7 64位 VS2015环境编译cegui-0.8.5
首先是去官网下载源码与依赖库 http://cegui.org.uk/ 然后得提一下,编译DX11版本带Effects11框架的话会有问题,也就是默认情况编译有问题,这是因为VS2015升级后编译器对 ...
- Win10 + VS2015 下编译 Qt5.6.0
近期由于另外一个项目需要用 vs2015 ,于是把 Qt 也升级到了 5.6.0 .由于项目需要兼容 Windows xp ,所以需要自己编译 Qt .这里大致整理一下编译的过程. 安装 Active ...
- VS2015 加快编译速度
在使用VS2015 编译的时候,每次修改工程中的某一个文件,启动调试时,往往都是整个工程都需要重新编译一遍.由于这个工程代码量太大,每次编译完成都需要将近10分钟左右的时间编译.最烦人的时候是当编译完 ...
随机推荐
- Silverlight 后台利用代码触发 Button 的Click事件
页面上一个查询按钮,当用户点击 回车键 的时候 处罚查询按钮的onclick事件 public MainPage() { InitializeComponent(); this.KeyDown += ...
- CodeForces 722C Destroying Array (并查集)
题意:给定 n 个数,然后每次破坏一个位置的数,那么剩下的连通块的和最大是多少. 析:用并查集来做,从后往前推,一开始什么也没有,如果破坏一个,那么我们就加上一个,然后判断它左右两侧是不是存在,如果存 ...
- PCB 铜皮(Surface)折线多边形扩大缩小实现(第一节)
继续铜皮多边形的相关的算法, 如何用代码实现多边形的扩大与缩小,这部份内容准备分为四节内容来讲解, 第一节,折线多边形的扩大缩小(不包含圆弧) 此篇讲第一节 第二节,带圆弧的多边形的扩大缩小 第三 ...
- E20170523-hm
parse vt. 从语法上描述或分析(词句等); escape character エスケープ文字 转义符 arity [计] 数量; analyzevt. <美>分析; 分解; ...
- HDU6012:Lotus and Horticulture(扫描线)(前缀和)
传送门 题意 给出n种植物的适宜培育温度区间[l,r],低于下限获值c,高于上限获值b,其他获值a 分析 首先考虑应该尝试选择哪些点:区间的左右端点.与区间左右端点距离0.50.5的点,这样就一定可以 ...
- How to Compare Means (均值比较)
在比较数据的均值时,我们可能知道: 比较工厂当天生产的零件的长度是否合格 (length >= N mm),用 t-Test; 比较各一线城市的人均收入,用 ANOVA. 其实均值比较还有很多检 ...
- Xcode配置SVN详细步骤
转载:http://blog.csdn.net/weiqubo/article/details/8288635 Xcode 默认自带Git 与 SVN,我们本篇介绍SVN的详细配置步骤如下: 1. ...
- TDB 12c : Transportable Database
转 http://oracleinaction.com/12c-transportable-database/
- 多功能Markdown编辑器MarkdownPad 2的下载、安装和初步使用步骤(图文详解)(博主推荐)
不多说,直接上干货! MarkdownPad 是什么? 一.MarkdownPad 2的下载 http://markdownpad.com/download/markdownpad2-setup. ...
- Asp.Net识别手机访问
在VS创建WEB应用程序时会有一个微软开发的典型web应用程序 在根目录有个用户控件用来实现切换手机和电脑 其中有个微软开发的类和方法用来专门判断移动设备和桌面设备 在Microsoft.AspNet ...