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


 '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配置问题。