编译环境:

(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. 在SQL中导入Excel数据时强制以文本类型导入

    Excel不是关系型数据库,在导入到sql中时对于数值型,sql有时int型会处理成float,有时数字文本混排的列,sql会认为是数值型,导入的结果有的数据变成了null,但是用sql导出excel ...

  2. PL/SQL — BULK COLLECT用法

    BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎.通常可以在SELECT INTO.FETCH INTO以及RETURNING ...

  3. 一步步学习ASP.NET MVC3 (11)——@Ajax,JavaScriptResult(2)

    请注明转载地址:http://www.cnblogs.com/arhat 今天在补一章吧,由于明天的事可能比较多,老魏可能顾不上了,所以今天就再加把劲在写一章吧.否则对不起大家了,大家看的比较快,可是 ...

  4. 【BZOJ1823】 [JSOI2010]满汉全席

    Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而 ...

  5. js函数语法

    <script type="text/javascript">    //1 普通方法  /*   *  function 方法名(参数){   *   方法体   * ...

  6. cocos2dx3.4 分割plist图片

    如果想要修改一个plist文件新打包成plist,而此刻原来的小图都找不到了,那只能把plist分解了,代码如下: void UiManage::DecodePlist(string imgPath, ...

  7. python 读写文本文件

    本人最近新学python ,用到文本文件的读取,经过一番研究,从网上查找资料,经过测试,总结了一下读取文本文件的方法. 1.在读取文本文件的时无非有两种方法: a.f=open('filename', ...

  8. 关于 Java 性能监控您不知道的 5 件事,第 1 部分

    责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java? 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 ...

  9. HDU 1171 Big Event in HDU(DP)

    点我看题目 题意 : 给你一个n,然后n组数据,每组两个数字,一个是物品的价值,另外一个是物品的数量,让你尽量将这些东西分成价值相等的两份,如果无法相等就前一份要大于后一份. 思路 :这个题可以转化成 ...

  10. 李洪强漫谈iOS开发[C语言-020]-scanf的本质

    scanf是有返回值和参数的