编译mongodb C++驱动 windows

本文详细记录了在Windows上编译MongoDB C++驱动的过程,包括下载源代码、安装SCons、Python、Boost,修改SConstruct文件,解决编译错误,并最终生成lib文件。在VS中配置附加包含目录、库目录和链接输入,以实现Release静态版本的编译。对于Debug版本的编译,则需要完整源代码。在编译过程中,还遇到了Boost库的链接问题,通过手动添加lib和复制dll文件到运行目录解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个mongodb  的C++ 驱动着实费了我一番功夫,不过终于成功跑通了。

 

首先,下载驱动源代码:http://dl.mongodb.org/dl/cxx-driver  我在这里下载 2.4版本
安装 scons
 下载python2.7并安装,添加环境变量
 下载scons , 添加环境变量,注意这里的环境变量是  ...\Python27\Scripts
安装boost ,教程很多。
  比如:http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html

  注意这里的 boost 版本我们选择 1.49.0,方便起见,我是全部安装的,安装完成之后 除了boost , stage , doc 这三个目录其余全部删除,这个时候大小约1.6G,远没有5G那么大,好多obj文件都是编译的中间文件
  之所以选择 1.49.0有如下原因:
  boost在1.5以后就将TIME_UTC改为了TIME_UTC_,mongodb 用的绝对不高于1.49.0
  官网上说Boost 1.49 source is now included directly in version 2.1.1+,在2.1.1 之后就内部包含1.49 了。显然 2.4 应该用 1.49 的boost ,虽然驱动的源代码没有包含。这是后话。
  boost版本太低的话 会出现 Compiling Filesystem version 3 file with BOOST_FILESYSTEM_VERSION defined != 3 因为 1.49 以后 Filesystem version就是3 了。

安装完boost之后,我们修改 mongodb driver 的源代码:
  打开 根目录下的SConstruct 25行 处修改 BUILD_DIR='c:/boost_1_49_0',  这里的boost路径为 你自己机子上的路径,我的放在C盘根目录下
  不同的版本可能行数不一样 ,我的是 2.4.3 这个办法就是 把编译目录改为 boost的路径,会在boost路径下 生成 mongo文件夹,编译完成删了就行。
直接编译的话,还会提示错误,text.h   # if !defined(_UNICODE)  把前边的# 去掉。

然后cmd 进入下载的源码 根目录 ,scons

等待几分钟,会在根目录下生成 mongoclient.lib。

vs中加入 附加包含目录 ,附加库目录,注意这里 需要加上boost 和mongodb的
另外还需要,在链接里边 加入输入
mongoclient.lib
Dbghelp.lib
Ws2_32.lib

进入vs 输入测试代码

#include <iostream>
#include "mongo/client/dbclient.h"

using namespace std;

int main()
{
   try
   {
     DBClientConnection conn;
     conn.connect("127.0.0.1:27017");
     cout << "connect OK" << endl;
   }
   catch(mongo::DBException &e)
   {
     cout << e.what() << endl;
    }
}


 

运行,成功,但这仅仅是 release 静态 版本的编译成功,如果要编译debug版本的 就需要用到整个源代码了

http://www.cnblogs.com/geosky/archive/2013/05/05/VS2010-MongoDB-Cpp-Driver.html

值得注意的是,这个方法编译成功后 依然会有许多 boost 链接的问题 ,这个我的解决办法是 手动加入

#pragma comment(lib, "boost_filesystem-vc100-mt-1_49.lib")
并且拷贝 缺少的boost dll到程序的运行目录,真是麻烦啊。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值