编译mongodb C++驱动 windows

这个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 
#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到程序的运行目录,真是麻烦啊。

 

 

你可能感兴趣的:(技术分享,c++,源代码,mongodb)