windows:
1 安装scons
(1): 下载, 使用x86_32位,因为scons只有32位安装包可用, ,python-2.7.6.msi
(2):下载2.3.0,,scons-2.3.0-setup.exe
(3):安装python 和 scons, 将C:\Python27\Scripts写入PATH
(4): 下载安装 ,,pywin32-218.win32-py2.7.exe
2 安装boost库
3 下载mongodb的C++ 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#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"<
工程配置中加入头文件和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文件了,参考。如果要编MDd的,就改为env.Append(CCFLAGS = ['-D_DEBUG', '/MDd'])。
最终编完。