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

时间:2013-11-04 18:45:34

标签: c++ mongodb visual-studio-2012 boost

请告诉我如何使用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"])
    
  • 我表演'scons mongoclient'。

  • 我制作了一个Visual Studio C ++项目。
  • 我在项目中设置了'Release'和'x64'。
  • 在属性页/配置属性/ C C ++ /常规/其他包含目录中,我设置'C:\ boost \ boost_1_54_0'和'C:\ mongo \ mongo-cxx-driver-v2.4 \ src'。< / LI>
  • 在属性页/配置属性/链接器/常规/附加库目录中, 我设置'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

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

谢谢。

2 个答案:

答案 0 :(得分:9)

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

此解决方案在具有以下特征的计算机上成功:

  1. Windows XP SP3 32位
  2. Visual Studio Express 2010(VC 10)
  3. 我使用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 install

    然后按Enter键。

    - 前缀标志指定将在其中创建驱动程序的.lib文件的目标目录, - cpppath 指定Boost标头所在的文件夹找到文件, - libpath 是Boost .lib文件的路径。当然你应该改变你的路径。将在 - 前缀/ lib路径中创建名为 libmongoclient-s.lib 的文件。 如果要在启用调试的情况下构建驱动程序,则应使用以下命令:

    <强> scons的

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

    <强> - cpppath = d:\ MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0

    - libpath = D:\ MongoDBcplusplusClient \ lib32

    <强> - 赢版本分钟= XPSP3

    - dbg =安装

    将在 - 前缀/ 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 \蒙戈 - CXX司机遗留\蒙戈 - CXX驱动器     遗留\包括)

    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)

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

答案 1 :(得分:5)

简单的解决方案使用vcpkg。

按照git上提到的说明下载vcpkg。 https://github.com/Microsoft/vcpkg

第1步 C:\ vcpkg&gt;。\ 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&gt;。\ 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;