mongo的安装

windows:

   1 安装scons

    (1): 下载python2.7, 使用x86_32位,因为scons只有32位安装包可用, http://www.python.org/download/releases/2.7/,python-2.7.6.msi

    (2):下载scons2.3.0,http://www.scons.org/download.php,scons-2.3.0-setup.exe

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

    (4): 下载安装pywin32 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/,pywin32-218.win32-py2.7.exe

   2 安装boost库

   3 下载mongodb的C++ driver http://dl.mongodb.org/dl/cxx-driver/

     4 开始安装

      CD 到解压的driver目录,运行scons,会提示boost的路径不对,打开SConstruct文件,在最后加上env.Append(CPPPATH=["D:/boost/include/boost-1_54"], LIBPATH=["D:/boost/lib/x64"]),指明目录;

      再次运行scons,会提示text.h(89):#error temp error,这是因为scons没带使用 Unicode 字符集的参数,于是就默认使用多字节字符集,打开\mongo-cxx-driver-v2.2\src\mongo\util下的text.h文件,将#error temp error加双斜线注释掉;

      再次运行scons,会提示无法解析的符号,在SConstruct文件中加入env.Append(LIBS=['WS2_32','Dbghelp']);

      如果你也遇到“\mongo-cxx-driver-v2.4\src\mongo\util”中file.cpp文件中90行: _handle = CreateFileW(toNativeString(filename).c_str(), 报的错误,把CreateFileW改成CreateFile。

   5 测试

      

#include <iostream> 
#include "mongo/client/dbclient.h" 
using namespace std; 
using namespace mongo; 

void run() { 
    DBClientConnection c; 
    c.connect("localhost"); //add port,c.connect("localhost:27017") 
} 

int main(void) 
{ 
    try { 
        run(); 
        cout<<"connected ok"<<endl; 
    }catch(DBException& e){ 
        cout<<"caught"<<e.what()<<endl; 
    } 
    return 0; 

} 

 

    工程配置中加入头文件和boost的路径,编译,会有很多连接错误,在链接中加入Dbghelp.lib;WS2_32.lib。编译,还是有错误,仔细一看,发现是mongoclient.lib是在vs2012下编的,而我的测试代码是2010,所以要重新编译mongoclient.lib。

    在SConstruct文件中的

env = Environment(BUILD_DIR='#build',
                  CLIENT_ARCHIVE='${CLIENT_DIST_BASENAME}${DIST_ARCHIVE_SUFFIX}',
                  CLIENT_DIST_BASENAME='mongo-cxx-driver',
                  CLIENT_LICENSE='#LICENSE.txt',
                  CLIENT_SCONSTRUCT='#SConstruct',
                  MSVS_ARCH=None,
                  PYTHON=sys.executable,
                  PYSYSPLATFORM=os.sys.platform)

改成

env = Environment(BUILD_DIR='#build',
                  MSVS_VERSION = '10.0',
                  CLIENT_ARCHIVE='${CLIENT_DIST_BASENAME}${DIST_ARCHIVE_SUFFIX}',
                  CLIENT_DIST_BASENAME='mongo-cxx-driver',
                  CLIENT_LICENSE='#LICENSE.txt',
                  CLIENT_SCONSTRUCT='#SConstruct',
                  MSVS_ARCH=None,
                  PYTHON=sys.executable,
                  PYSYSPLATFORM=os.sys.platform)

  加了一个编辑器选项:MSVS_VERSION。

  再次编译,发现还是有连接错误,搞了半天,把运行库改为MT,然后改为release,就好了。就是说不能用debug来测试了?

 

  再次改SConstruct文件的配置,使之能用于debug:在文件最后加上env.Append(CCFLAGS = ['-D_DEBUG']),就能编出debug版的lib文件了,参考http://www.scons.org/wiki/SconstructMultiple#CA-ea12e28a4186b7e833669c4888e7c7337fa73293_1。如果要编MDd的,就改为env.Append(CCFLAGS = ['-D_DEBUG', '/MDd'])。

 

  最终编完。

 

 

 

 

    

 

 

  

    

posted @ 2013-11-20 20:39  啊饭  阅读(246)  评论(0编辑  收藏  举报