如何使用mongodb的c ++驱动程序构建程序?

hiz*_*izz 3 c++ boost mongodb visual-studio-2012

请告诉我如何使用mongodb的c ++驱动程序构建程序.关于我糟糕的英语没有火焰.

我的环境

  • Windows7 64bit
  • Visual Studio Ultimate 2012(x64发布目标项目)

我执行了以下步骤.

  • 我安装了Ptython 2.7.2,Python for Windows扩展和Scons 2.3.0.
  • 我安装了boost 1.54.0.我执行'boostrap'和'b2 -a --build-type = complete --address-model = 64 --link = static --runtime-link = static'
  • 我下载mongodb-linux-x86_64-v2.4-latest.tgz.
  • 我在SConstruct中添加了以下文本.

    env.Append(CPPPATH=['C:\\boost\\boost_1_54_0'])
    env.Append(LIBPATH=['C:\\boost\\boost_1_54_0\\stage\\lib'])
    env.Append(CPPDEFINES=["_UNICODE"])
    env.Append(CPPDEFINES=["UNICODE"])
    
    Run Code Online (Sandbox Code Playgroud)
  • 我表演'scons mongoclient'.

  • 我做了一个Visual Studio C++项目.
  • 我在项目中设置了'Release'和'x64'.
  • 在属性页/配置属性/ C C++ /常规/附加包含目录中,我设置'C:\ boost\boost_1_54_0'和'C:\ mongo\mongo-cxx-driver-v2.4\src'.
  • 在属性页/配置属性/链接器/常规/附加库目录中,我设置'C:\ boost\boost_1_54_0\stage\lib'和'C:\ mongo\mongo-cxx-driver-v2.4'.
  • 在属性页/配置属性/链接器/输入/附加依赖项中,我设置'mongoclient.lib','ws2_32.lib'和'psapi.lib'.
  • 在属性页/配置属性/链接器/输入/忽略特定默认库中,我设置'msvcprt.lib'和'LIBCMT.lib'.
  • 在属性页/配置属性/ C C++ /预处理器/预处理器定义中,我设置'_CRT_SECURE_NO_WARNINGS'.
  • 在属性页/配置属性/ C C++ /代码生成/运行时库中,我设置'多线程(/ MT)'.

我使用驱动程序制作了一个程序.但是,程序的构建解决方案失败了.

1>mongoclient.lib(stringutils.obj) : error LNK2001: unresolved external symbol __security_check_cookie
1>mongoclient.lib(initializer_dependency_graph.obj) : error LNK2001: unresolved external symbol __security_check_cookie
1>mongoclient.lib(initializer.obj) : error LNK2001: unresolved external symbol __security_check_cookie
....
 fatal error LNK1120: 154 unresolved externals
Run Code Online (Sandbox Code Playgroud)

如果你指出有关步骤的任何奇怪的话,如果能帮到我的话.

谢谢.

小智 10

如何构建MongoDB C++驱动程序

该解决方案在具有以下特征的机器上取得了成功:

  1. Windows XP SP3 32位
  2. Visual Studio Express 2010(VC 10)

我使用D:\ MongoDBcplusplusClient作为工作目录(我安装了所有先决条件).

处理:

  • 步骤1

下载MongoDB C++驱动程序:

https://github.com/mongodb/mongo-cxx-driver

您可以使用Git进行克隆或将其下载为.zip文件(我做了第二个).您将获得一个像mongo-cxx-driver-legacy.zip这样的文件.将其解压缩到工作目录中的文件夹mongo-cxx-driver-legacy.

  • 第2步

下载Boost预构建的Windows二进制文件.注意!!!您应该使用特定版本的Boost.在我的情况下,版本1.52做了伎俩.你可以在这里下载:

http://boost.teeks99.com/

我下载了boost_1_52_0-vc32-bin.exe自解压exe.把它放在你的工作目录上并运行它.它将创建一个包含boost二进制文件(.lib和.dll文件)的文件夹(类似于lib32)

  • 第3步

下载Boost源代码(.h文件).当然这些应该与步骤2中的版本相同.我从这里下载它们:

http://sourceforge.net/projects/boost/files/boost/1.52.0/

您将获得一个文件boost_1_52_0.zip,您可以在boost_1_52_0文件夹中提取该文件.

  • 第4步

下载Python.在这个例子中,我从这里下载了2.7.9版本,特别是Windows x86 MSI安装程序:

https://www.python.org/downloads/release/python-279/

  • 第5步

从这里下载Scons:

http://www.scons.org/download.php

我下载了Windows安装程序(scons-2.3.4-setup.exe)并在Python目录中安装了Scons(在我的例子中是C:\ Python27).

  • 第6步

从这里下载msinttypes:

https://code.google.com/p/msinttypes/

(您应该将这些头文件包含在使用该驱动程序的项目中)

  • 第7步

转到开始 - >运行...并在运行框中写入cmd.在打开的命令提示符窗口中,导航到在步骤1中解压缩mongo驱动程序的文件夹.在我的情况下,我做了:cd D:\ D:\ MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy

  • 第8步

使用Scons构建驱动程序.在步骤7中导航的目录中写入:

scons的

前缀= d:\ MongoDBcplusplusClient \蒙戈-CXX驱动遗留\蒙戈-CXX驱动遗留

--cpppath = d:\ MongoDBcplusplusClient\boost_1_52_0\boost_1_52_0

--libpath = D:\ MongoDBcplusplusClient\lib32

--win-version-min = xpsp3安装

并按Enter键.

--prefix标志指定所述驾驶者的的.lib文件将被创建的目标目录,--cpppath指定在Boost的头文件所在的文件夹和--libpath提振.lib文件的路径.当然你应该改变你的路径.将在--prefix/lib路径中创建名为libmongoclient-s.lib的文件.如果要在启用调试的情况下构建驱动程序,则应使用以下命令:

scons的

前缀= d:\ MongoDBcplusplusClient \蒙戈-CXX驱动遗留\蒙戈-CXX驱动遗留

--cpppath = d:\ MongoDBcplusplusClient\boost_1_52_0\boost_1_52_0

--libpath = D:\ MongoDBcplusplusClient\lib32

--win版本分钟= XPSP3

--dbg =安装时

将在--prefix/lib路径中创建名为libmongoclient-sgd.lib的文件.

  • 第9步

在Windows资源管理器中,导航到安装MongoDB C++驱动程序的文件夹,进入子文件夹lib(在我的例子中,这是D:\ MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy\lib)和将文件libmongoclient-s.lib重命名为mongoclient.lib,将libmongoclient-sgd.lib重命名为mongoclient-gd.lib.

  • 第10步

打开Visual Studio 2010 Express并打开要使用MongoDB C++驱动程序的项目.您应该指定依赖项.在解决方案资源管理器(左栏)上右键单击项目名称,然后单击"属性".转到C/C++→常规,在附加包含目录中添加:

a) Boost头文件目录(在我的例子中为D:\ MongoDBcplusplusClient\boost_1_52_0\boost_1_52_0)

b) MongoDB C++驱动程序头文件目录(在我的例子中为D:\ MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver legacy\include)

c) Cstdint类型头文件目录(在我的例子中:\ MongoDBcplusplusClient\msinttypes-r26)

  • 第11步

转到链接器→常规,在附加库目录中添加:

a) Boost .lib文件目录(在我的例子中为D:\ MongoDBcplusplusClient\lib32)

b) MongoDB C++驱动程序.lib文件目录(在我的例子中为D:\ MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy\lib)

完成这些步骤后,将在发布和调试配置中成功构建使用该驱动程序的项目.


小智 6

简单的解决方案使用vcpkg.

下载vcpkg按照git上提到的说明进行操作. https://github.com/Microsoft/vcpkg

步骤1 C:\ vcpkg>.\ vcpkg搜索mongodb

你会看到类似的东西

mongo-c-driver 1.6.2-1用C编写的MongoDB客户端库.

mongo-cxx-driver 3.1.1-1 MongoDB C++驱动程序.

步骤2 C:.\ vcpkg搜索mongodb安装mongo-cxx-driver

然后拿一杯咖啡....

Stap 3

C:\ vcpkg>.\ vcpkg集成安装

完成..

注意 先决条件:

Windows 10,8.1或7

Visual Studio 2017或Visual Studio 2015 Update 3

简单地导入

   #include <cstdint>
   #include <iostream>
   #include <vector>
   #include <bsoncxx/json.hpp>
   #include <mongocxx/client.hpp>
   #include <mongocxx/stdx.hpp>
   #include <mongocxx/uri.hpp>

     using bsoncxx::builder::stream::close_array;
     using bsoncxx::builder::stream::close_document;
     using bsoncxx::builder::stream::document;
     using bsoncxx::builder::stream::finalize;
     using bsoncxx::builder::stream::open_array;
     using bsoncxx::builder::stream::open_document;
Run Code Online (Sandbox Code Playgroud)