mongo的安装

时间:2021-07-18 20:12:01

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 ; }

    工程配置中加入头文件和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'])。

  最终编完。