Mongo-cxx-driver驅動構建和安裝


一、 安裝環境和准備工作

二、 官方的安裝介紹

1. 官方文章1 http://mongoc.org/libmongoc/current/installing.html#
2. 官方文章2 http://mongocxx.org/mongocxx-v3/installation/
 注意:請注意選擇的Mongo-cxx-drvier 版本

 

三、下載mongo-cxx-driver

1. 方法1:在release頁面找合適的release版本,並下載。
release版本頁面地址: https://github.com/mongodb/mongo-cxx-driver/releases

  

  

 2. 方法2:在github找到mongo-cxx-driver的工程

github 的 mongo-cxx-driver工程地址:https://github.com/mongodb/mongo-cxx-driver

  

  特別注意,不要直接下載master版本。

要點擊master,選擇一個release版本。這里,我們選擇的是V3.5的版本。然后下載下來。
備注:當前時間,2020年4月26日,最新版本的Mongo-cxx-driver是V3.5版本,它需要的Mongo-c-driver最低版本是V1.15。前面,我們已經完成了mongo-c-driver V1.15版本的構建和安裝。官方的參考鏈接里面,也特別提到了版本號的對應信息。(這些細節不注意,會出現很多奇怪錯誤)

四、 開始構建和安裝

以我們下載的 mongo-cxx-driver-releases-v3.5.zip 文件為例進行介紹:

1. 先解壓 mongo-cxx-driver-releases-v3.5.zip 文件夾
然后在解壓后的 mongo-cxx-driver-releases-v3.5 文件夾中,打開cmd窗口。(或者打開cmd窗口,進入mongo-cxx-driver-releases-v3.5目錄)


2. 對當前文件夾,執行git初始化命令(構建過程需要git下載一些東西,如果沒有這個步驟會報錯)

git init 

3. 在mongo-cxx-driver-releases-v3.5中創建一個准備構建的文件夾:

mkdir cmake-build

4. 進入cmake-build文件夾

cd cmake-build

5. 配置驅動環境 

cmake .. -G "Visual Studio 15 2017 Win64" "-DCMAKE_CXX_STANDARD=17" "-DCMAKE_BUILD_TYPE=Release" "-DBUILD_SHARED_AND_STATIC_LIBS=ON" -DCMAKE_CXX_FLAGS="/Zc:__cplusplus" "-DBOOST_ROOT=C:\local\boost_1_72_0" "-DCMAKE_PREFIX_PATH=C:\mongo-c-driver" "-DCMAKE_INSTALL_PREFIX=C:\mongo-cxx-driver" "-DBUILD_VERSION=1.0.2"   

 

補充說明:

C:\local\boost_1_72_0 是你的boost庫安裝目錄(默認是這個目錄)
C:\mongo-c-driver 是你安裝的mongo-c-driver驅動目錄(默認也是這個目錄)
C:\mongo-cxx-driver 是你mongo-cxx-driver要安裝的目錄(不建議修改)
-DBUILD_VERSION=1.0.2 是一個版本號,沒有這個,構建的時候會有錯誤提示。這個可以隨意指定版本號。


6. 將msbuild.exe 配置到電腦的環境變量中
將msbuild.exe的路徑,追加到Path的環境變量后面。(如果不懂windows環境變量配置,請自行百度了解一下)。
在我的電腦上,msbuild.exe 在我的電腦是 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64


7. 編譯和安裝驅動

msbuild.exe ALL_BUILD.vcxproj
msbuild.exe INSTALL.vcxproj
msbuild.exe generate_uninstall\uninstall.vcxproj

執行完第7步命令之后,在電腦的”C:\mongo-cxx-driver”目錄下面就會生成若干文件了。Mongon-cxx-driver驅動就安裝在這里。
在第7步,也可以用vs2017打開我們剛才構建的工程。右鍵選中ALL_BUILD,然后點擊生成。生成完成之后,右鍵選中 INSTALL,然后點擊生成。就安裝成功了。

 

 

  

恭喜你驅動安裝成功!!!!

 

如果安裝失敗了,請重新按照文檔講解來一步一步操作。

特別注意下載的工程的版本。

你也可以再回過頭看看官方介紹的安裝步驟,看看哪個地方疏漏了。


五、 跑一個案例

1. 創建工程:
用vs2017新建一個控制台應用程序,並把win32環境改為win64.


2. 設置屬性面板
 2.1【c/c++】【常規】,在【附加包含目錄】,添加bsoncxx和mongocxx的頭文件:

C:\mongo-cxx-driver\include\mongocxx\v_noabi
C:\mongo-cxx-driver\include\bsoncxx\v_noabi

我們假設你的mongo-cxx-driver是安裝在了C:\mongo-cxx-driver 目錄下面。

 

 

 2.2【鏈接器】【常規】,在【附加庫目錄】,添加庫文件目錄:

C:\mongo-cxx-driver\lib\bsoncxx.lib
C:\mongo-cxx-driver\lib\mongocxx.lib

 2.3【鏈接器】【輸入】,在【附加依賴項】中,添加庫文件目錄:

C:\mongo-cxx-driver\lib\bsoncxx.lib
C:\mongo-cxx-driver\lib\mongocxx.lib

 

  

 2.4【調試】,在【環境】中添加dll的路徑

PATH=C:/mongo-cxx-driver/bin;C:\mongo-c-driver\bin

要真正運行程序,還需要將dll放在可執行路徑中,這里我可以通過設置PATH,在工程中運行我們的程序。mongocxx需要mongoc的若干庫文件。

  

 2.5預處理器

_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS

 

 2.6語言環境設置為C++17

 

 

 

 


 2.7示例代碼:

// FirstMongoCXXProject.cpp : 此文件包含 "main" 函數。程序執行將在此處開始並結束。
//
#include <iostream>
#include <sstream>
#include <thread>
#include <vector>
#include <cstdint>
#include <mongocxx/index_model.hpp>
#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/builder/stream/helpers.hpp>
#include <bsoncxx/builder/basic/helpers.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.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;
int main(int, char**) {
//===================example:插入一個Json
mongocxx::instance instance{}; // This should be done only once.
mongocxx::client client{ mongocxx::uri{} };
mongocxx::database db = client["mydb"];
mongocxx::collection coll = db["test"];
auto builder = bsoncxx::builder::stream::document{};
bsoncxx::document::value doc_value = builder
<< "name" << "MongoDB"
<< "type" << "database"
<< "count" << 1
<< "versions" << bsoncxx::builder::stream::open_array
<< "v3.2" << "v3.0" << "v2.6"
<< close_array
<< "info" << bsoncxx::builder::stream::open_document
<< "x" << 203
<< "y" << 102
<< bsoncxx::builder::stream::close_document
<< bsoncxx::builder::stream::finalize;
bsoncxx::document::view view = doc_value.view();
bsoncxx::document::element element = view["name"];
if (element.type() != bsoncxx::type::k_utf8) {
// Error
}
std::string name = element.get_utf8().value.data(); //stdx::string_view 類型的 data()方法,可以轉為字符串指針
bsoncxx::stdx::optional<mongocxx::result::insert_one> result =
coll.insert_one(view);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM