最近为了解决IM消息记录的高速度写入、多文档类型支持的需求,决定使用MongoDB来解决。

考虑到MongoDB对VS版本要求较高,与我现有的VS版本不兼容,在leveldb、ssdb、redis、hbase等NoSQL中转了一圈,最后还是选择了MongoDB,应了那句话:没有最好的,只有最合适的。

MongoDB由于使用了C++的新特性,官方建议使用VS2013来编译,最低要求VS2010。

MongoDB C++驱动编译过程较为复杂,官方也没有提供编译好的驱动包,网上的资料编译版本都比较老了,特此整理最新的MongoDB C++驱动编译方法。

使用VS2010编译MongoDB C++驱动详解:

1、下载python 2.7.9安装程序(不要使用3.X的版本), 使用32位,因为scons只有32位安装包可用;

下载地址:https://www.python.org/downloads/ 选择:Windows x86 MSI installer

2、下载scons 2.3.4,MongoDB的驱动是用scons构建的,安装后会自动安装到python的脚本目录里;

下载地址:http://www.scons.org/

3、其他教程里有写Python27\Scripts写入PATH这一步,python 2.7.9应该会自动写入,可省略;

4、MongoDB C++驱动依赖Boost库(1.49及以上版本),可以直接下载编译好的Boost文件直接安装,省去了自己编译,节约半天时间;

下载地址:http://sourceforge.net/projects/boost/files/boost-binaries/ 选择:boost_1_57_0-msvc-10.0-32

注意32位和64位区别,需编译64位驱动的下载64位的Boost库。

5、下载MongoDB C++驱动源代码,选择;

下载地址:https://github.com/mongodb/mongo-cxx-driver/wiki/Download%20and%20Compile

推荐下载26compat稳定版分支,解压到本地。

6、命令行下cd进驱动目录,使用以下命令编译;

D:\mongo-cxx-driver-26compat>scons --dbg=on --32 --dynamic-windows --sharedclien
t --cpppath=D:\boost_1_57_0 --libpath=D:\boost_1_57_0\lib32-msvc-10.0 --use-syst
em-boost

这里编译的是32位动态库,编译成功后会生出mongoclient.dll。

cpppath指定boost头文件目录;

libpath指定boost库目录;

其他命令可以参考官网:https://github.com/mongodb/mongo-cxx-driver/wiki/Download%20and%20Compile

编译MongoDB C++驱动遇到的问题:

1、官网推荐编译时使用install选项,按说明的意思是编译后将驱动和头文件安装到指定目录,不过使用时会报boost库找不到的错误;

2、使用编译好的驱动时提示error_codes.h和error_codes.cpp文件找不到,这两个文件在MongoDB C++驱动源码下,拷贝过去即可。

以上是编译MongoDB C++驱动快速的方法,大家在编译时可以参照。

今天听说MongoDB 3.0即将推出,写入速度在原有基础上提升6-7倍,性能很强悍~


记录,为更好的自己!

使用VS2010编译MongoDB C++驱动详解的更多相关文章

  1. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  2. 25.Linux-Nor Flash驱动(详解)

    1.nor硬件介绍: 从原理图中我们能看到NOR FLASH有地址线,有数据线,它和我们的SDRAM接口相似,能直接读取数据,但是不能像SDRAM直接写入数据,需要有命令才行 1.1其中我们2440的 ...

  3. 16.Linux-LCD驱动(详解)

    在上一节LCD层次分析中,得出写个LCD驱动入口函数,需要以下4步: 1) 分配一个fb_info结构体: framebuffer_alloc(); 2) 设置fb_info 3) 设置硬件相关的操作 ...

  4. 16.Linux-LCD驱动(详解)【转】

    转自:https://www.cnblogs.com/lifexy/p/7604011.html 在上一节LCD层次分析中,得出写个LCD驱动入口函数,需要以下4步: 1) 分配一个fb_info结构 ...

  5. linux usb 驱动详解

    linux usb 驱动详解 USB 设备驱动代码通过urb和所有的 USB 设备通讯.urb用 struct urb 结构描述(include/linux/usb.h ). urb 以一种异步的方式 ...

  6. gcc与g++的编译链接的示例详解

    一.编译方式的示例详解 1. 编译C代码 代码如下:main.c /*!  ************************************************************** ...

  7. 18.Llinux-触摸屏驱动(详解)

    本节的触摸屏驱动也是使用之前的输入子系统 1.先来回忆之前第12节分析的输入子系统 其中输入子系统层次如下图所示, 其中事件处理层的函数都是通过input_register_handler()函数注册 ...

  8. 21.Linux-写USB键盘驱动(详解)

    本节目的: 根据上节写的USB鼠标驱动,来依葫芦画瓢写出键盘驱动 1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的 先来回忆下,我们之前写的鼠标驱动的id_table是这样: 所以 ...

  9. 18.Llinux-触摸屏驱动(详解)【转】

    转自:https://www.cnblogs.com/lifexy/p/7628889.html 本节的触摸屏驱动也是使用之前的输入子系统 1.先来回忆之前第12节分析的输入子系统 其中输入子系统层次 ...

随机推荐

  1. CsvHelper文档-2读

    CsvHelper文档-2读 这个库默认不需要做任何设置就可以很容易的使用它.如果你的类属性名称直接匹配csv的标题名称,那么可以按照下面的实例来用: (以下所有的代码都需要引用using csvhe ...

  2. [Clr via C#读书笔记]Cp6类型和成员基础

    Cp6类型和成员基础 成员 常量:字段(静态字段和实例字段):实例构造器:类型构造器(用于静态字段的构造):方法(静态方法和实例方法):操作符重载(本质是一个方法):转换操作符:属性(本质还是方法): ...

  3. vue 与jq 的对比

    vue.react和angular,众所周知,他们是前端框架的3个大佬.这篇主要想对比一下用vue和用jq的区别,至于和其他框架的对比,我想vue的官网说的更为详细. 我算是独自用vue写过一个小型项 ...

  4. Kali渗透测试工具-netcat

    netcat被称作是网络工具当中的瑞士军刀,短小却功能强大 1.端口扫描 nc -nvz 目标IP 端口范围 eg: nc -nvz 192.168.1.105 1-65535 -n参数是不要使用DN ...

  5. Python中package的导入语法

    在Python中,一个目录被称为一个package.import和from语法除了导入module文件之外,还可以导入package,语法如下: # import语法 import dir1.dir2 ...

  6. Alpha版——版本控制报告(Thunder)

    Part One 回答问题: 0.在吹牛之前,先回答这个问题:如果你的团队来了一个新队员,有一台全新的机器,你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新 ...

  7. 【android】实现手指滑动来切换activity(转)

    http://code.eoe.cn/115 1.jpg外部引用 原始文档 MainActivity.java外部引用 原始文档 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  8. 分布式系统理论-terms

    Distributed programming is the art of solving the same problem that you can solve on a single comput ...

  9. 百度安卓sdk开发

    一 key问题 1 在百度地图api控制台申请key的流程主要用到了app包,开发工具的开发sha1和发布sha1值,这2个值的获取就非常关键了. 一般来说我们都是在windows上开发安卓,使用an ...

  10. VS2010中的sln,suo分别是什么含义

    我们通过双击.sln加载出我们的工程. Visual Studio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件.为解决方案资源管理器提供显示管理文件 ...