hiz*_*izz 3 c++ boost mongodb visual-studio-2012
请告诉我如何使用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"])
Run Code Online (Sandbox Code Playgroud)我表演'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
Run Code Online (Sandbox Code Playgroud)
如果你指出有关步骤的任何奇怪的话,如果能帮到我的话.
谢谢.
小智 10
如何构建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安装
并按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的文件.
在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\mongo-cxx-driver-legacy\mongo-cxx-driver legacy\include)
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)
完成这些步骤后,将在发布和调试配置中成功构建使用该驱动程序的项目.
小智 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)