如何使用mongodb的c++驱动程序来构建程序
How can I build a program using c++ driver of mongodb?
请告诉我如何使用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++驱动程序
该解决方案在具有以下特征的机器上取得了成功:
- Windows XP SP3 32位
- 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
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.
- 步骤2
C:.vcpkg search mongodb install mongo-cxx-driver
然后喝杯咖啡。。。。
- 步骤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;
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 如何跨平台将二进制资源构建到程序中?
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 在Windows 10上使用Visual Studio 2019构建的Tesseract API c ++程序在Wind
- 如何在使用Makefile构建后在cmd中运行该程序?
- 如何在使用 SDL2 的 Eclipse 中构建 c++ 程序
- 在树莓派上用libtorch构建程序时的链接问题
- 在虚拟机上使用 OpenCV 重新构建C++程序
- 如何构建程序以避免查询对象类型?
- CMake 找不到与 "Unix Makefiles" 对应的构建程序
- 第二次构建C++程序时出错
- 如何使用boost::asio::spawn构建程序
- 在Eclipse Indigo上构建C++程序时出错
- 在开源社区中,构建C/C++程序的最佳方式是什么
- 无法使用 Sublime Text 2 构建C++程序
- 如何使用mongodb的c++驱动程序来构建程序
- 为什么有时在vs2015中构建程序时出现"应用程序无法正确初始化(0xc0000018)"
- 用make和自动依赖关系构建程序
- 在多个平台上构建程序
- 有什么方法可以配置waf来在MAC系统中构建c++程序吗?