64位VS2010配置MongoDB

本文分享了在Windows 7 64位环境下,使用Visual Studio 2010配置MongoDB C++客户端遇到的问题及解决方案,包括下载老版本MongoDB 207和Boost 142,使用命令行工具scons构建客户端库,解决编译链接错误等。教程详细介绍了操作步骤和注意事项。

  因为这个问题困扰了我三整天,今天终于配置好了,所以先写关于这个问题的日志吧。搜遍了中英文网站,没有一个说的清楚的,主要原因是Mongo版本众多,而Mongo依赖的文件有很多,而且也是版本众多。有些人使用64bit有些人32,也缺乏参考性,要命的是Mongo把自己的客户端都弄得十分混乱。在这里先提前做出说明,因为我用的是64bit vs 2010,所以主要针对这个环境做配置,不保证其它环境类似。文章中引用到别人内容的都会声明引用出处,但是否原创作者则无从考证。


  下面进入正题,在MongoDB的官网上可以找到各种客户端和驱动。就拿C++来说,就有完整source和单独客户端两种。因为我之前使用了MongoDB主程序和JAVA的API,所以只想用客户端。网站上的说明简单却不易懂,尝试了下发现scons mongoclient.lib时无法选择flag,就是没法设置64bit或者debug模式,在论坛里发现不少人也讨论这个问题。所以就把完整的source下载来用,10多M大概。最新版的只用Python和scons了,不像老版本那么多依赖。完整的source里可以找到个third party子目录,这个第三方里包含了大部分所需的外部库。用scons可以制造出所需的client.lib,但是找不到 'libboost_thread-vc100-mt-1_49.lib'这个文件,至少我在硬盘里都没找到。除非执行buildboost64.bat,但是boost又不支持,没有bjam.exe。我专门下载了boost1.49版本客户端,可是不会build出bjam,这个是我个人原因,没有钻研那么多。所以,换句话说,你下载了最新的source并且按照官网的tutorial生成后,可能也会找不到vc100那个库,不能运行。即使有这个库,也未必能成功调用。看过一个来自10gen软件工程师Tad Marshall的评论(http://grokbase.com/t/gg/mongodb-user/122t79d8ce/c-drivers-for-windows-problem-visual-studio-c-2010),其中一句大概意思是除非你对windows编译链接和VS环境操作的如鱼得水,可以去查看boost在线文档来逐个编译。显然,我差的太远。


  经过我多次抓狂的实验,只得按照一个论坛里提供的讨论,使用老版本来解决并最终成功。如果看客也和我一样是个初学者,并且MongoDB官方仍然还没完善好它的客户端,那么我建议参照如下办法。(http://grokbase.com/t/gg/mongodb-user/128tmfjfdj/how-i-installed-the-windows-7-64x-c-driver-mongodb-to-work-with-visual-studio-2010


对这个教程所以点点说明。他也是VS201064bit,并假设你没安装过任何所需工具。前序步骤和教程或官网一样,下载安装32位版Python和scons软件。注意要是32位,因为scons只有32位。教程里之后安装的pywin32倒是可选,官网说除非你想编译客户端文件。


之后重点来了,和教程一样下载Mongo207和Boost142这两个老版本。之前我试过最新客户端,依赖的是boost149,我甚至单独下载过149,但编译方法也和教程不同,我没实现。会的人可以自己试下。想要成功build出bjam.exe,并在mongo里buildboost64.bat,就按照教程里的boost142即可,而mongo客户端也要207才会依赖142的lib。


对教程进行一些提醒和说明,安装目录尽量在c:\boost\或c:\mongodb\便于操作。使用了VS 64bit命令行但是输入了vcvarsall.bat,会提示你运行在x86下,也许是因为scons命令式32位的。在boost中build后可以看见指定目录下的bjam就对了,在mongo\buildscripts下buildboost64就可以看到boost\lib下出现了那些要命的lib。编译时注意看提示,会告诉你是否成功。最后仍然用VS的cmd在mongo目录下执行那三个scons语句便可。如果和我一样之前已有设置好路径正常使用的客户端,那么只用scons mongoclient.lib即可。注意使用64和debug标识符。


之后按照教程建立项目配置即可。底下会看到作者也找不到'libboost_thread-vc100-mt-sgd-1_42.lib',解决办法就是在运行库设置成动态多线程MDd。


教程很详细,英文也不难。希望Mongo尽快完善自己的客户端并做好版本控制,把官网教程也做的更有条理一些。过两天有空会写自己遇到的OpenCV 64bit VS2010配置问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值