请告诉我如何使用mongodb的c ++驱动程序构建程序。 没有关于我的英语不好的火焰。
我的环境
我执行了以下步骤。
我在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'。
我使用驱动程序制作了一个程序。但是,程序的构建解决方案失败了。
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
如果你指出有关步骤的任何奇怪的话,如果能帮到我的话。
谢谢。
答案 0 :(得分:9)
如何构建MongoDB C ++驱动程序
此解决方案在具有以下特征的计算机上成功:
我使用D:\ MongoDBcplusplusClient作为工作目录(我安装了所有先决条件)。
过程:
下载MongoDB C ++驱动程序:
https://github.com/mongodb/mongo-cxx-driver
您可以使用Git进行克隆或将其下载为.zip文件(我做了第二次)。您将获得一个像mongo-cxx-driver-legacy.zip这样的文件。将其解压缩到工作目录中的文件夹mongo-cxx-driver-legacy。
下载Boost预建的Windows二进制文件。 注意!!! 您应该使用特定版本的Boost。在我的情况下,版本1.52做了伎俩。你可以从这里下载:
我下载了boost_1_52_0-vc32-bin.exe自解压exe。把它放在你的工作目录上并运行它。它将创建一个包含boost二进制文件(.lib和.dll文件)的文件夹(类似于lib32)
下载Boost源代码(.h文件)。当然这些应该与步骤2中的版本相同。我从这里下载它们:
http://sourceforge.net/projects/boost/files/boost/1.52.0/
您将获得一个文件boost_1_52_0.zip,您可以在boost_1_52_0文件夹中提取该文件。
下载Python。在这个例子中,我从这里下载了2.7.9版本,特别是Windows x86 MSI安装程序:
https://www.python.org/downloads/release/python-279/
从这里下载Scons:
http://www.scons.org/download.php
我下载了Windows安装程序(scons-2.3.4-setup.exe)并在Python目录中安装了Scons(在我的例子中是C:\ Python27)。
从这里下载msinttypes:
https://code.google.com/p/msinttypes/
(您应该将这些头文件包含在使用该驱动程序的项目中)
转到开始 - >运行...并在运行框中写入cmd。在打开的命令提示符窗口中,导航到在步骤1中解压缩mongo驱动程序的文件夹。在我的情况下,我做了: cd D:\ D:\ MongoDBcplusplusClient \ mongo-cxx-driver-legacy \ mongo-cxx-driver-legacy
使用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 的文件。
在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 即可。
打开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)
转到链接器→常规,在附加库目录中添加:
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;