转载地址:https://blog.csdn.net/sqcfj/article/details/86716831

mongoDB有两个接口库:mongo-c-driver和mongo-cxx-driver

前者是c代码接口库,后者是c++代码接口库,是在mongo-c-driver的基础上进行二次封装

一、准备工作

1、下载mongo-c-driver源码:https://github.com/mongodb/mongo-c-driver/releases/tag/1.13.0(注意:3.4.0版本mongo-cxx-driver只能配1.13.0mongo-c-driver)

2、下载mongo-cxx-driver源码:https://github.com/mongodb/mongo-cxx-driver/releases(3.4.0版本)

3、下载boost:https://www.boost.org/users/history/version_1_70_0.html(此为下载源码,需要自己编译 )

4、安装boost:https://blog.csdn.net/s_lisheng/article/details/72871218(建议直接https://sourceforge.net/projects/boost/files/boost-binaries/1.68.0/下载安装编译好的boost_1_68_0-msvc-14.0-64.exe安装包 )

二、boost编译

下面为编译boost步骤:(这个其实没有必要,可以跳过,全当体验编译过程。。。)

在根目录下运行bootstrap.bat

生成了这两个东西

然后修改这个配置文件

改成这样(话说也不知道有什么用)

# Boost.Build Configuration
# Automatically generated by bootstrap.bat import option ; using msvc : 14.0 : "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx64\x64\cl.exe"; option.set keep-going : false ;

然后在开始菜单VS2017工具包下运行命令(随便打开一个CMD会找不到xxx文件错误......):

b2 stage --toolset=msvc-14.0 address-model= --stagedir="E:\Library\boost_1_70_0\bin\VC14" threading=multi --build-type=complete

参数按照博主的说明设置

这个编译需要一些时间,可以睡一觉......

编译完成......内容和.exe安装解压后的是一样的,就是版本更新一点

三、mongo-c-driver-1.13.0编译

由于源码中已经有了build文件夹,为了不和其中的混合,新建cmake-build,在此目录下打开cmd或power shell,指向以下命令(文件目录替换成自己的)

cmake -G "Visual Studio 15 2017 Win64" "-DCMAKE_INSTALL_PREFIX=E:\Library\mongo-c-driver-1.13.0" "-DCMAKE_PREFIX_PATH=E:\Library\mongo-c-driver-1.13.0" ..

然后生成就会生成解决方案,打开.sln文件,选择32或64位,分别编译生成ALL_BUILD, INSTALL两个项目

至此第一个c驱动编译完成,在根目录下已生成bin, build, lib文件夹

四、mongo-cxx-driver-r3.4.0编译

编译第二个c++驱动,此时需要用到boost库(这里使用的.exe安装的boost),步骤基本相同,源码中有空的build目录,就直接在这里编译了

cmake -G "Visual Studio 15 2017 Win64" "-DCMAKE_INSTALL_PREFIX=E:\Library\mongo-cxx-driver-r3.4.0" "-DCMAKE_PREFIX_PATH=E:\Library\mongo-c-driver-1.13.0" "-DBOOST_ROOT=E:\Library\boost_1_67_0" ..

然后和步骤和上面一样,打开.sln解决方案,分别ALL_BUILD, INSTALL,等待生成三个文件夹

第二个c++驱动编译编译完成

使用的时候,需要将mongo-cxx-driver生成的include目录和mongo-cxx-driver生成的include目录,以及boost库目录都添加进去,链接上述生成的lib文件,并且把生成的dll放到可执行文件一起就可以了。到此windows平台下C++版本的mongo driver编译完成。

只有自己编译boost的过程比较麻烦,但可以选择使用现成的编译好的安装包

然后注意c和c++驱动的版本对应问题,应该不会有什么错误

五、重要说明

我在编译完成了以上两个库之后,在配置使用c++驱动时报了bsoncxx/types.hpp头文件错误,在该文件中所有的该结构体type_id初始化失败

 struct BSONCXX_API b_utf8 {
static constexpr auto type_id = type::k_utf8; ///
/// Constructor for b_utf8.
///
/// @param value
/// The value to wrap.
///
template <typename T,
typename std::enable_if<!std::is_same<b_utf8, typename std::decay<T>::type>::value,
int>::type = >
BSONCXX_INLINE explicit b_utf8(T&& t) : value(std::forward<T>(t)) {} stdx::string_view value; ///
/// Conversion operator unwrapping a string_view
///
BSONCXX_INLINE operator stdx::string_view() const {
return value;
}
};

最后不得不放弃使用c++驱动,而使用c驱动,具体demo可以参考c驱动API,倒是更为简洁一点。具体操作见 MongoDB C Driver Tutorial

最新文章

  1. BZOJ 4390: [Usaco2015 dec]Max Flow
  2. https://yq.aliyun.com/articles/65125?spm=5176.100240.searchblog.18.afqQoU
  3. 一款免费支持PDF、word、excel、PPT、jpeg之间互转线上软件
  4. [deviceone开发]-UI组件的动画示例
  5. Python学习总结2:raw_input() 与 input()
  6. sencha touch 开发准备
  7. 2016-03-24:Windows内存泄露分析工具
  8. Win2003打不开https的问题
  9. cocos2d-x 2.2 资源更新AssetsManager例子代码
  10. mysql merge表介绍
  11. iOS程序员对算法的要求
  12. Webdriver实现对菜单栏的灵活切换功能,附上代码,类似的菜单栏切换可以自己封装
  13. 【经验随笔】Java通过代理访问互联网平台提供的WebService接口的一种方法
  14. python基础自学 第四天
  15. js 面试知识点
  16. 倒水问题(Fill, UVa 10603)
  17. mysql5.6 基于Binlog ROW记录方式进行数据恢复(无备份)
  18. 性能优化:使用SparseArray代替HashMap&lt;Integer,Object&gt;(转)
  19. python3.4连接和读取oracle数据表
  20. C程序设计语言习题(3-3)

热门文章

  1. JVM内存模型以及HotSpot的GC策略
  2. ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
  3. 栈和队列----设计一个有getMin功能的栈
  4. the first week
  5. &lt;input type=&quot;file&quot;&gt;文件上传
  6. selenium统计网页加载时间
  7. openlayers 保存当前地图View为图片
  8. winform DataGrid排序、去掉第一的空白列
  9. linux 安装 setuptools
  10. python3练习100题——036