2013-11-04 157 views
3

請告訴我如何使用mongodb的C++驅動程序來構建程序。 沒有關於我的壞英語的火焰。如何使用mongodb的C++驅動程序構建程序?

我的環境

  • 的Windows7 64位
  • 的Visual Studio 2012旗艦版(64位版本目標項目)

我執行以下步驟。

  • 我安裝了Ptython 2.7.2,Python for Windows extensions和Scons 2.3.0。
  • 我安裝了boost 1.54.0。我執行了'boostrap'和'b2 -a --build-type = complete --address-model = 64 --link = static --runtime-link = static'我下載了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"]) 
    
  • 我執行'scons mongoclient'。

  • 我做了一個Visual Studio C++的項目。
  • 我在項目中設置了'Release'和'x64'。
  • 在屬性頁面/配置屬性/ C C++ /常規/其他包含目錄中,我設置了'C:\ boost \ boost_1_54_0'和'C:\ mongo \ mongo-cxx-driver-v2.4 \ src'。
  • 屬性頁/配置屬性/鏈接器/常規/其他庫目錄, 我設置了'C:\ boost \ boost_1_54_0 \ stage \ lib'和'C:\ mongo \ mongo-cxx-driver-v2.4' 。
  • 在屬性頁面/配置屬性/鏈接器/輸入/附加依賴,我設置了'mongoclient.lib','ws2_32.lib'和'psapi.lib'。
  • 在屬性頁/配置屬性/鏈接器/輸入/忽略特定的默認庫,我設置'msvcprt.lib'和'LIBCMT.lib'。
  • 在屬性頁/配置屬性/ C C++/Preproosessor /預處理器定義中,我設置了'_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 

如果能幫助我,如果你能指出什麼奇怪的步驟。

謝謝。

+1

什麼錯誤? Windows上的C++驅動程序編譯過程並不可怕。 – WiredPrairie

+1

感謝您的意見。 Visual Studio返回致命錯誤。我在文本中添加了一部分錯誤。謝謝。 – hizz

回答

9

如何建立的MongoDB C++司機

該解決方案的機器上成功具有以下特點:

  1. 的Windows XP SP3 32位
  2. 的Visual Studio Express的2010(VC 10)

我用D:\ MongoDBcplusplusClient作爲工作目錄(我在那裏安裝了所有的prer equisites)。

過程:

  • 步驟1

下載MongoDB的C++驅動程序:

https://github.com/mongodb/mongo-cxx-driver

您可以使用Git進行克隆或下載它作爲一個.zip文件(我做了第二次)。你會得到一個像mongo-cxx-driver-legacy.zip這樣的文件。將其解壓縮到工作目錄內的文件夾mongo-cxx-driver-legacy。

  • 步驟2

下載升壓預編譯的Windows二進制。 注意!您應該使用特定版本的Boost。在我的情況1.52版中做了這個訣竅。你可以從這裏下載:

http://boost.teeks99.com/

我下載了boost_1_52_0-vc32-bin.exe自解壓exe。把它放在你的工作目錄並運行它。這將創建一個文件夾(類似LIB32)將包含增強的二進制文件(.LIB和.dll文件)

  • 步驟3

下載加速的源代碼(.h文件)。當然,這些應該是來自同一個版本在步驟2中我下載他們從這裏:

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

你會得到一個文件boost_1_52_0.zip你可以在boost_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)和i在Python目錄下安裝Scons(在我的情況下是C:\ Python27)。

  • 步驟6

從這裏下載msinttypes:

https://code.google.com/p/msinttypes/

(你應該包括這些頭文件來使用驅動程序中的項目)

  • 第7步

轉到開始 - >運行...並在運行框中寫入cmd。在打開的命令提示符窗口中,導航到您在步驟1處提取mongo驅動程序的文件夾。在我的情況下,我執行了: cd D:\ D:\ MongoDBcplusplusClient \ mongo-cxx-driver-legacy \ mongo-cxx-driver-傳統

  • 步驟8

使用使用SCons構建驅動程序。在目錄中,您在第7步寫導航:

scons的

前綴= d:\ MongoDBcplusplusClient \蒙戈 - CXX司機遺留\蒙戈 - CXX司機遺留

--cpppath = d:\ MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0

--libpath = d:\ MongoDBcplusplusClient \ LIB32

--win版本分鐘= XPSP3安裝

並按下回車鍵。

--prefix標誌指定在該驅動器的的.lib文件將被創建的目標目錄,--cpppath:規定了升壓頭文件位於的文件夾和--libpath Boost .lib文件的路徑。當然,你應該改變你的道路。將在--prefix/lib路徑上創建一個名爲libmongoclient-s.lib的文件。 如果你想建立與調試啓用,您就應該使用下面的命令司機:

scons的

前綴= d:\ MongoDBcplusplusClient \蒙戈 - CXX司機遺留\蒙戈-CXX -driver遺留

--cpppath = d:\ MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0

--libpath = d:\ MongoDBcp lusplusClient \ LIB32

--win版本分鐘= XPSP3

--dbg =上安裝

命名libmongoclient-sgd.lib的文件將在被創建--prefix/lib路徑。

  • 步驟9

在Windows資源管理器瀏覽到安裝MongoDB的C++司機的文件夾,進入子LIB(對我來說,這是d:\ MongoDBcplusplusClient \蒙戈-CXX -driver遺留\蒙戈 - CXX司機遺留\ LIB)和文件libmongoclient-s.lib重命名爲mongoclient.liblibmongoclient-sgd.libmongoclient-gd.lib

  • 步驟10

打開Visual Studio 2010 Express和打開的要使用MongoDB的C++驅動程序項目。你應該指定依賴關係。在解決方案資源管理器(左列)上右鍵單擊項目名稱,然後點擊屬性。 轉到C/C++→常規和附加包含目錄添加:

一個)升壓頭文件的目錄(在我的情況d:\ MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0)

B) MongoDB的C++司機的頭文件目錄(在我的情況 d:\ MongoDBcplusplusClient \蒙戈 - CXX司機遺留\蒙戈 - CXX驅動 遺留\包括)

C) Cstdint類型的頭文件的目錄(在我的情況 :\ MongoDBcplusplusClient \ msinttypes-R26)

  • 步驟11

轉到鏈接→常規,在附加庫目錄添加:

一)升壓.lib文件目錄(在我的情況D:\ MongoDBcplusplusClient \ lib32)

b) MongoDB的C++驅動程序.lib文件目錄(在我的情況d:\ MongoDBcplusplusClient \蒙戈 - CXX司機遺留\蒙戈 - CXX司機遺留\ LIB)

這些步驟之後使用的驅動程序將是項目在發佈和調試配置中均成功構建。

+0

剛剛編輯你的答案讓鏈接工作,當編輯批准的鏈接將工作,很好的答案,非常詳細:) –

3

簡單的解決方案使用vcpkg。

下載vcpkg按照git上提到的指示。 https://github.com/Microsoft/vcpkg

步驟1 C:\ vcpkg> \ vcpkg搜索MongoDB的

,你會看到類似C語言編寫的MongoDB的是

蒙戈-C驅動程序1.6.2-1客戶端庫。 。

mongo-cxx-driver 3.1.1-1 MongoDB C++驅動程序。

步驟2 C:\ vcpkg搜索MongoDB的安裝蒙戈-CXX驅動器的咖啡

然後抓住杯子....

STAP 3

C:\ vcpkg> \。 vcpkg集成安裝

做..

注意 PRER equisites:

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; 
相關問題