日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vs2010连接mongodb服务器,X64位

發(fā)布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vs2010连接mongodb服务器,X64位 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?這個東西真是耗費了很多時間和精力,中間出現好多錯誤,把英文的mongodb和boost仔細看了好幾遍,可算是弄出來了。

http://docs.mongodb.org/manual/reference/connection-string/

http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html

?

一、scons,python,SpiderMonkey, boost與mongodb的關系

借鑒http://blog.csdn.net/mniwc/article/details/8590528
1.scons
scons是一個Python寫的自動化構建工具,同linux的make工具功能相似。與之關聯(lián)的SConstruct文件也即類似make工具的makefile文件,
描述了編譯和鏈接的內容和方式。在這里就是用scons這個工具來編譯生成mongoclient.lib的(而不是用vs)。
2.python
Python是一種面向對象、直譯式計算機程序設計語言。因為scons是用python寫的那就肯定要用到它的庫啦,所以在scons之前先裝python.
3.SpiderMonkey
一個用C語言實現的JavaScript腳本引擎,mongodb的數據類型格式是bson,而bson是json的二進制形式的存儲格式,
json是JavaScript使用的數據類型。mongodb是支持javascript腳本語言進行操作的,所以就需要一個JavaScript腳本引擎了
也就是這個SpiderMonkey了。
4.boost
?一個很強大的C++庫,mongodb是用C++寫,使用到了這個庫,所以需要它。


二、生成mongoclient.lib

windows下編碼mongodb客戶端需要自已先編譯生成一個mongoclient.lib,也即連接mongodb服務器所需要的C++接口類庫。

1、下載安裝python,版本必須要>=2.4且<3.0(因為scons只有在python這些版本才能用)。

這個不用多說,安裝路徑如:C:\Python27

2、下載安裝scons.(需要python,所以要先安裝python)
將C:\Python27\Scripts添加到PATH中

http://sourceforge.net/projects/scons/files/scons/2.2.0/

下載scons,scons解壓scons-2.2.0為止,將其拷貝出來,路徑如:E:\mongodb-install\scons-2.2.0

cmd下cd E:\mongodb-install\scons-2.2.0

python setup.py install進行scons的安裝。

scons 安裝時出現問題:(這個問題記不清了)

LookupError: unknown encoding: cp65001:

這是python的編碼問題,python中沒有定義cp65001編碼,不識別。

要在出現問題的文件中加入:

import codecs codecs.register(lambda name: name == 'cp65001' and codecs.lookup('utf-8') or None)

這樣就能把cp65001編碼映射成utf-8編碼。

3、下載安裝boost。

下載boost_1_49_0版本。

將其解壓,文件夾重命名為boost,放于C:\boost下

(據說編譯mongoclient.lib的默認搜索路徑為C:\boost,但是實際操作根本沒有搜到,還是要自己添加)

打開Visual Studio Command ,如下圖中visual studio 命令提示(2010):

cd C:\boost;

輸入bootstrap,等待其生成Boost構建工具bjam。

在命令行輸入bjam toolset=msvc-10.0 variant=debug,release threading=multi link=static。然后等待安裝完成。如果要生成64位庫,鍵入命令bjam toolset=msvc-10.0 variant=debug,release threading=multilink=static runtime-link=static?address-model=64。

注意紅色的字,不過不這樣輸入,會生成shared模式,當編譯mongoclient.lib時好多l(xiāng)ib找不到,如

LINK : fatal error LNK1104: 無法打開文件“l(fā)ibboost_thread-vc100-mt-s-1_49.lib

?

安裝完成后,屏幕上會提示"The Boost C++ Libraries were successfully built!"。并制定頭文件和庫文件目錄。

頭文件要include : C:\boost

生成的庫文件在C:\boost\stage\lib下

?

4、下載mongodb的C++ driver
http://dl.mongodb.org/dl/cxx-driver/

下載mongodb-linux-x86_64-v2.4-latest.tar,一直解壓到mongo-cxx-driver-v2.4,放置路徑為:E:\mongodb-install\mongo-cxx-driver-v2.4

?

5、下載SpiderMonkey。
? 這個鏈接是編程好的用于vs2010的https://github.com/dwight/vc2010_js,

建一個與mongodb同級目錄js存放下載的文件

?

6、下載mongodb

?將下載的mongodb放于C:\mongo文件下。不需要下源代碼,下window64位的就可以了。以后的操作會在mongodb下生產lib和include。

下載mongodb C++ driver將其層層解壓到mongo-cxx-driver-v2.2,將其拷貝到目錄

E:\mongodb-install\mongo-cxx-driver-v2.2下,目錄如下:

省略部分;

cd到該目錄下運行scons mongoclient.lib來準備生成mongoclient.lib

出現錯誤:

說明boost路徑配置不對。

?配置boost路徑,打開E:\mongodb-install\mongo-cxx-driver-v2.2\SConstruct文件,可以看到

AddOption("--extrapath",dest="extrapath",type="string",nargs=1,action="store",help="comma separated list of add'l paths (--extrapath /opt/foo/,/foo) static linking")AddOption("--prefix",dest="prefix",type="string",nargs=1,action="store",default="/usr/local",help="installation root")

可以選擇添加的--prefix為mongodb的路徑,--extrapath就是用到的boost庫的路徑

可以運行程序的時候在cmd中加入:

E:\mongodb-install\mongo-cxx-driver-v2.2>scons --prefix c:\mongodb --extrapath C :\boost,C:\boost\stage

也可以在SConstruct文件中加入

env.Append(CPPPATH=["C:/boost"], LIBPATH=["C:/boost/stage/lib"])

可能會出錯:

提示text.h(89):#error temp error

這是因為scons沒帶使用 Unicode 字符集的參數,于是就默認使用多字節(jié)字符集

我們打開\mongo-cxx-driver-v2.2\src\mongo\util下的text.h文件

/* like toWideString but UNICODE macro sensitive */ # if !defined(_UNICODE) #error temp error inline std::string toNativeString(const char *s) { return s; } # elseinline std::wstring toNativeString(const char *s) { return toWideString(s); } # endif

將#error temp error加雙斜線注釋掉 //#error temp error

可是輸入后出錯:

這些無法解析的外部符號包含在WS2_32.lib,Dbghelp.lib中,在SConstruct文件中加入

env.Append(LIBS=['WS2_32','Dbghelp'])

?

這些錯誤就沒有了,但是出現一個很奇怪的問題

本來是要生成mongoclient.lib的,卻說沒有找到mongoclient.lib中止生成。

后來想起來之前有人說把E:\mongodb-install\mongo-cxx-driver-v2.2\src文件夾下的SConscript.client

中的一處

mongoclient_install = env.Install('#/', [mongoclient_lib,#env.SharedLibrary('mongoclient', clientSource),])

里面中的env.SharedLibrary('mongoclient', clientSource)前面的“#”去掉,當時就去掉了,

剛把這個#又加進去了,現在編譯生成了mongoclient.lib。

?

總結

以上是生活随笔為你收集整理的vs2010连接mongodb服务器,X64位的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。