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

How can I build a program using c++ driver of mongodb?

本文关键字:构建 程序 驱动程序 c++ 何使用 mongodb      更新时间:2023-10-16

请告诉我如何使用mongodb的c++驱动程序构建程序。对我糟糕的英语毫不在意。

我的环境

  • Windows7 64位
  • Visual Studio Ultimate 2012(x64版本目标项目)

我执行了以下步骤。

  • 我安装了Ptython 2.7.2、Python for Windows扩展和Scons 2.3.0
  • 我安装了boost 1.54.0。我执行了"boostrap"answers"b2-a--构建类型=完整--地址模型=64--链接=静态--运行时链接=静态">
  • 我下载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"])
    
  • 我表演了"蒙哥里昂烤饼"。

  • 我做了一个Visual Studio C++的项目
  • 我在项目中设置了"Release"answers"x64">
  • 在"属性页"/"配置属性"/C C++/"常规"/"其他包含目录"中,我设置了"C:\boost\boost_1_54_0"answers"C:\mongo\mongocxx-driver-v2.4\src">
  • 在属性页/配置属性/链接器/常规/附加库目录中,我设置了"C:\boost\boost_1_54_0\stage\lib"answers"C:\mongo\mango-cxx-driver-v2.4">
  • 在属性页/配置属性/链接器/输入/其他依赖项中,我设置了"mongoclient.lib"、"s2_32.lib"answers"psapi.lib">
  • 在属性页/配置属性/链接器/输入/忽略特定默认库中,我设置了"msvcprt.lib"answers"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

如果你指出台阶上有什么奇怪的地方,请帮我。

谢谢。

如何构建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文件(我做了第二个)。你会得到一个像mongocxx-driver-legacy.zip这样的文件。将其提取到工作目录中的文件夹mongocxx driver legacy中。

  • 步骤2

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

http://boost.teeks99.com/

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

  • 步骤3

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

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

您将获得一个文件boost_1_52_0.zip,您可以在boost_1_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驱动程序legacy\mongo cxx驱动程序legacy

  • 步骤8

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

烤饼

--prefix=D:\MongoDBcplusplusClient\mongo cxx driver legacy\mongo cxx driver legacy

--cpppath=D:\MongoDBcplusplusClient\boost_1_52_0\boost_1_1_52_0

--libpath=D:\MongoDB cplusplusClient\lib32

--win版本min=xpsp3安装

然后按Enter键。

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

烤饼

--prefix=D:\MongoDBcplusplusClient\mongo cxx driver legacy\mongo cxx driver legacy

--cpppath=D:\MongoDBcplusplusClient\boost_1_52_0\boost_1_1_52_0

--libpath=D:\MongoDB cplusplusClient\lib32

--win版本min=xpsp3

--dbg=安装时

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

  • 步骤9

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

  • 步骤10

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

a)Boost头文件目录(在我的例子中是D:\MongoDB加lusplusClient\Boost_1_52_0\Boost_1_1_52_0)

b)MongoDB C++驱动程序头文件目录(在我的案例中D: \MongoDBcplusplusClient\mongo cxx驱动程序legacy\mongo cxx驱动程序遗留\包括)

c)Cstint类型头文件目录(在我的情况下:\MongoDBcplusplusClient.msinttypes-r26)

  • 步骤11

转到链接器→一般和附加图书馆目录添加:

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

b)MongoDB C++driver.lib文件目录(在我的例子中是D:\MongoDB cplusplusClient\mongo cxx driver legacy\mongo cxx driver legacy\lib)

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

使用vcpkg的简单解决方案。

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

  1. 步骤1
C:vcpkg>.vcpkg search mongodb

你会看到类似这个的东西

mongo-c-driver       1.6.2-1          Client library written in C for MongoDB.
mongo-cxx-driver     3.1.1-1          MongoDB C++ Driver.
  1. 步骤2
C:.vcpkg search mongodb install mongo-cxx-driver

然后喝杯咖啡。。。。

  1. 步骤3
C:vcpkg>.vcpkg integrate install

完成。。

备注

先决条件:

Windows 10、8.1或7

Visual Studio 2017或Visual Studio 2015更新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;