编译环境:

(1) 下载python2.7, 使用x86_32位,因为scons只有32位安装包可用;

(2) 下载scons2.3.0,The current production release of SCons is 2.3.0;

(3)  安装python 和 scons, 将C:\Python27\Scripts写入PATH;

(4) 安装boost1.54版本的库,直接下载windows版本编译好的库,目录c:\boost

(5) 在c:\boost里建立一个include目录,然后将c:\boost\boost目录放到include里面,即c:\boost\include\boost\..

(6) 在c:\boost里建立一个lib目录,然后将boost的lib文件放在lib目录下

(7) 直接下载mongodb整个源码https://github.com/mongodb/mongo.git(最新版本2.5.3),c++ driver的源码也在其中,目录c:\mongo

(8) 修改scons的编译文件,这个文件在我机器上运行有点问题,怎么都不能取得boost lib的文件,于是直接修改源码c:\mongo\SConstruct

if use_system_version_of_library("boost"):
if not conf.CheckCXXHeader( "boost/filesystem/operations.hpp" ):
print( "can't find boost headers" )
Exit(1) conf.env.Append(CPPDEFINES=[("BOOST_THREAD_VERSION", "")])
for b in boostLibs:
l = "boost_" + b
conf.FindSysLibDep(l,
[ l + boostCompiler + "-mt" + boostVersion,
l + boostCompiler + boostVersion ], language='C++' )

修改后的代码:

boostCompiler和boostVersion是自己定义,比如我的c:\boost\lib下面的lib文件只这样的boost_filesystem-vc100-1_55.lib,所以我定义为

boostCompiler = "-vc100"
boostVersion = "-1_55"
这两个参数是可以在scons里定义的,但是我定义的没有效果,我也没有去深度查找为什么,只要能编译就可以了
if use_system_version_of_library("boost"):
if not conf.CheckCXXHeader( "boost/filesystem/operations.hpp" ):
print( "can't find boost headers" )
Exit(1) conf.env.Append(CPPDEFINES=[("BOOST_THREAD_VERSION", "")])
for b in boostLibs:
l = "boost_" + b
boostCompiler = "-vc100"           # 这里的值,根据boost版本自己修改
boostVersion = "-1_55"            # 这里的值,根据boost版本自己修改
conf.FindSysLibDep(l,
[ l + boostCompiler + "-mt" + boostVersion,
l + boostCompiler + boostVersion ], language='C++' )
print l                        # 这是我自己打印出来,看是否是正确的值
print l + boostCompiler + "-mt" + boostVersion # 这是我自己打印出来,看是否是正确的值
print l + boostCompiler + boostVersion      # 这是我自己打印出来,看是否是正确的值

开始编译mongodb c++ driver:

  (1) 打开vs2010的x64 promtp cmd

  (2) C:\mongo>scons --full --use-system-boost --extrapath=c:/boost install-mongoclient --64 --dbg=on  这样编译出来的就是64位的debug版本,是MTd的

  C:\mongo>scons --full --use-system-boost --extrapath=c:/boost install-mongoclient --64 这样是64位的release版本,是MT的

  具体scons的参数可以参考http://docs.mongodb.org/ecosystem/tutorial/download-and-compile-cpp-driver/

  我的编译过程提示:

  

C:\mongo>scons --full --use-system-boost --extrapath=c:/boost install-mongoclit --64 --dbg=on
scons: Reading SConscript files ...
win32
scons version: 2.3.0
python version: 2 7 0 'final' 0
Checking whether the C++ compiler works(cached) yes
Checking whether the C compiler works(cached) yes
Checking if C++ compiler "$CC" is MSVC... (cached) yes
Checking if C compiler "cl" is MSVC... (cached) yes
Checking for __declspec(thread)... (cached) yes
Checking for C++ header file boost/filesystem/operations.hpp... (cached) yes
Checking for C++ library boost_thread-vc100-mt-1_55... (cached) yes
boost_thread
boost_thread-vc100-mt-1_55
boost_thread-vc100-1_55
Checking for C++ library boost_filesystem-vc100-mt-1_55... (cached) yes
boost_filesystem
boost_filesystem-vc100-mt-1_55
boost_filesystem-vc100-1_55
Checking for C++ library boost_program_options-vc100-mt-1_55... (cached) yes
boost_program_options
boost_program_options-vc100-mt-1_55
boost_program_options-vc100-1_55
Checking for C++ library boost_system-vc100-mt-1_55... (cached) yes
boost_system
boost_system-vc100-mt-1_55
boost_system-vc100-1_55
Checking for C header file unistd.h... (cached) no
Checking whether clock_gettime is declared... (cached) no
Checking for C++ header file execinfo.h... (cached) no
Checking for C library pcap... (cached) no
Checking for C library wpcap... (cached) no

在vs2010中使用,注意添加头文件目录,mongodb默认生成目录是在c:/usr/local/include,boost在c:/boost/include

添加lib目录,c:/usr/local/lib,c:/boost/lib, 需要使用的lib文件Ws2_32.lib;libmongoclient.lib;DbgHelp.lib

然后就ok了,可以正常使用了,测试通过。

mongodb c++ driver(2.53)windows编译的更多相关文章

  1. MongoDB C Driver Building on Windows

    一.编译mongodb c driver: 需要先安装OpenSSL:(参见:http://bbs.aircheng.com/read-2222-1) 步骤:(MongoDB步) 1.下载Active ...

  2. windows平台下安装、编译、使用mongodb C++ driver

    本博客将记录在Win8.1 ,VS2013环境下编译.配置mongodb C++ driver的流程. 1.下载预备 下载Boost:http://sourceforge.net/projects/b ...

  3. 编译安装MongoDB C++ Driver (win8.1 vs2013)

    在C++中调用mongodb的库函数需要安装mongodb的c++driver,需要自己编译,(自己搞了一天半 =_=''' ) 官网Build MongoDB From Source 说To bui ...

  4. mongodb c++ driver 2.0编译使用

    安装boost1.48.0 在boost的官网下载boost1.48.0,链接例如以下: http://sourceforge.net/projects/boost/files/boost/1.48. ...

  5. MongoDB C Driver使用教程

    MongoDB C Driver使用教程 转载请注明出处http://www.cnblogs.com/oloroso/ 本指南提供简介 MongoDB C 驱动程序. 在 C API 的详细信息,请参 ...

  6. MongoDB C Driver and APIinstances linux MongoDB安装配置

    <一,linux平台MongoDB安装配置>在这我们使用的Centos6 yum部署的,你想搞编译,自个干!

  7. MongoDB C driver API continues

    开篇前 <1,mongoc_init() func> mongoc_init() Synopsis void mongoc_init (void); Description This fu ...

  8. mongodb C++ Driver安装

    前言 mongocxx官网地址 http://mongocxx.org/?jmp=docs 本文的安装版本是:mongocxx-r3.2.0.tar.gz . 参考文档安装过程http://mongo ...

  9. RedHat6/Centos6.5安装mongodb php driver

    条件: 安装apache 安装php 1.下载mongodb phh driver 下载地址:pecl wget http://pecl.php.net/get/mongo-1.5.8.tgz 2.解 ...

随机推荐

  1. CSS弹性盒模型 box-flex

    目前没有浏览器支持boc-flex属性. Firefox支持代替的-moz-box-flex属性 Safari.Opera以及Chrome支持替代的-webkit-box-flex属性 box-fle ...

  2. css3太极图效果+自动旋转

    主要使用border-radius属性实现圆,半圆,定位坐标覆盖部分模块. 半圆: width: 50%; height: 100%; border-radius:100% 0 0 100% /50% ...

  3. tar解压去除文件夹

    tar zxvf test.tar.gz  --strip-components 1 解压到当前目录,并去除一级目录

  4. can't add foreign key in mysql?

    create table department (dept_name ), building ), budget numeric(,) ), primary key (dept_name) ); cr ...

  5. 创建Mysql

    CREATE DATABASE IF NOT EXISTS yiya DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

  6. 重置mysql密码

    如何修改mysql root密码 忘记MySQL ROOT密码是在MySQ使用中很常见的问题,可是有很多朋友并不会重置ROOT密码,那叫苦啊,特写此文章与大家交流: 1.编辑MySQL的配置文件:my ...

  7. cocos2dx 3.4 截图代码

    Size size = Director::sharedDirector()->getWinSize(); //定义一个屏幕大小的渲染纹理 RenderTexture* pScreen = Re ...

  8. IIS MIME类型问题(html5 video 本地打开可以,IIS打开不了)

    问题: mediaelement js(html 5 视频插件)网页用ie9本地打开可以,iis,vs2010在ie9上运行不了,chrome可以 (在博客园里有个人跟我遇到相同的问题:http:// ...

  9. 如何学习C++[转]

    关于学C++, 我向你推荐一些书(当然能够结合课内项目实践更好) 1.The C++ Programming Language(Bjarne Stroustrup)2. Inside The C++ ...

  10. java Arrays.asList()和Collections.addAll()

    java中的方法Arrays.asList(arg1,arg2,arg3...),经常用在将多个元素或数组转化为List中的元素,但是在使用的时候,应该注意: arg1决定返回list的元素类型(即第 ...