vs 2010はmongodbサーバー、X 64ビットを接続します.
このものは本当に多くの時間と精力を費やしました.中には多くの間違いがありました.英語のmongodbとbootsをよく見て、何度も取り出しました.
http://docs.mongodb.org/manual/reference/connection-string/
http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.
一、scons、python、Spider Monkey、bookとmongodbの関係
参考にするhttp://blog.csdn.net/mniwc/article/details/8590528 1.scons sconsはPythonが書いた自動化構築ツールで、linuxのmakeツールの機能と似ています.関連するSConstructファイル、つまりmakeツールに似たmakefileファイルは、コンパイルとリンクの内容と方法を記述しています.ここではsconsというツールを使って、mongoclient.libを生成するものをコンパイルします.2.python Pythonは対象に向けて、直訳式コンピュータプログラム設計言語である.sconsはpythonで書かれているので、必ずそのライブラリを使います.だから、sconsの前にpythonをインストールします.3.Spider MonkeyはC言語で実現されるJavaScriptスクリプトエンジンです.mongodbのデータタイプはbsonです.bsonはjsonのバイナリ形式の保存フォーマットです.jvaScriptのデータタイプです.mongodbはjavascriptスクリプト言語の操作をサポートしていますので、JavaScriptスクリプトエンジン、すなわちこのSpider Monkeyが必要です.4.book 強力なC++ライブラリで、mongodbはC++で書いています.このライブラリに使っていますので、それが必要です.
二、モンゴルクライン.libを生成する.
windowsの下でコード化されたmongodbクライアントは、先にコンパイルして1つのmongoclient.libを生成する必要があります.すなわち、mongodbサーバに接続するために必要なC++インターフェースライブラリです.
1、ダウンロードしてpythonをインストールして、バージョンは必ず>=>2.4しかも<3.0(sconsはpythonのこれらのバージョンでしか使えないからです).
これは言うまでもなく、インストール経路はC:\Pythoon 27
2、インストールsconsをダウンロードします.(pythonが必要ですので、pythonを先にインストールします.)C:\Python 27\ScripptsをPATHに追加します.
http://sourceforge.net/projects/scons/files/scons/2.2.0/
sconsをダウンロードして、sconsはsconsを解圧して、scons-2.2..0までそれをコピーして、パスは例えば:E:\mongodb-innstall\scons-2.2..0
cmd下cd E:\mongodb-innstall\scons-2.2.
python setup.py installはsconsのインストールを行います.
sconsのインストール時に問題が発生しました.
LookupErrer:unknown encoding:cp 65001:
これはpythonの符号化問題で、pythonにはcp 65001の符号化が定義されていません.識別されていません.
問題が発生したファイルに追加します.
import codecs
codecs.register(lambda name: name == 'cp65001' and codecs.lookup('utf-8') or None)
これにより、cp 65001符号をutf-8符号にマッピングすることができる.3、bookをダウンロードします.
bookをダウンロードします1_49_0バージョンです
そのストレスを解消して、フォルダをブックと名前を変えて、C:\bookの下に置く.
(mongoclient.libをコンパイルするデフォルトの検索パスはC:\bootstだと言われていますが、実際の操作は全く見つからないので、自分で追加します.)
Visual Studio Commundを開いて、以下の図のvisual studioコマンドの提示(2010):
cd C:\book;
bootstrapを入力してBoost構築ツールの生成を待つ.
コマンドラインにbjam toolset=msvc-10.0 variant=debugを入力して、release threading=multi link=staticです.そしてインストールが完了するまで待つ.64ビットライブラリを生成する場合は、コマンドbjam toolset=msvc-1000 variant=debugを入力し、release threading=multilk=static runtime-link=static address-model=64
赤い字に注意しますが、このように入力しないとsharedモードが生成されます.
LINK:fatal error LNK 1104:ファイルを開けませんでした.
インストールが完了すると、画面に「The Boost C++Libries were success fully built!」というメッセージが表示されます.ヘッダファイルとライブラリファイルディレクトリを作成します.
最初のファイルはincludeにします.C:\bootst
作成したライブラリファイルはC:\bootst\stage\libの下にあります.
4、mongodbのC++driverをダウンロードするhttp://dl.mongodb.org/dl/cxx-driver/
mongodb-linux-x 86_64-v 2.4-latest.tarをダウンロードして、ずっとmongo-cxx-driver-v 2.4まで解凍して、配置経路は:E:\mongodb-innstall\monto-cx-driver-v 2.4です.
5、Spider Monkeyをダウンロードします. このリンクはプログラミングされたvs 2010用です.https://github.com/dwight/vc2010_jsを選択します
ダウンロードしたファイルをmongodbと同じクラスのディレクトリjsに保存します.
6、モンゴdbをダウンロードする
ダウンロードしたmongodbをC:\mongoファイルの下に置いてください.ソースコードは不要です.下のwindow 64桁で大丈夫です.今後の操作はmongodbの下でlibとincludeを生産します.
monogodb C++driverをダウンロードして、その層をmono-cxx-driver-v 2.2に解凍して、それをカタログにコピーします.
E:\mongodb-innstall\mongo-cxx-driver-v 2.2の下、ディレクトリは以下の通りです.
部分を省略する
cdはこのディレクトリの下でscons mongoclient.libを実行してmongoclient.libを生成するつもりです.
エラーが発生しました
ブートパスの設定が間違っていることを説明します.
boottパスを設定して、E:\mongodb-innstall\monto-cxx-driver-v 2.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の経路です.プログラムを実行できる時は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):29858;errortemperror
これは、sconsがUnicodeの文字セットを使用するパラメータを持っていないため、デフォルトでは多バイトの文字セットを使用しています.
私達は\mono-cxx-driver-v 2.2\src\mono\utilの下のtext.hファイルを開けます.
/* like toWideString but UNICODE macro sensitive */
# if !defined(_UNICODE)
#error temp error
inline std::string toNativeString(const char *s) { return s; }
# else
inline std::wstring toNativeString(const char *s) { return toWideString(s); }
# endif
龛error temperrorにダブルスロープを付けてコメントします.入力後にエラーが発生しました.
这些无法解析的外部符号包含在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
中的一处
中のenv.ShardLibrary('mongoclient',clientSource)の前の「菗」は抜きました.mongoclient_install = env.Install('#/', [ mongoclient_lib, #env.SharedLibrary('mongoclient', clientSource), ])
これを入れたばかりです.今コンパイルしてモンゴルクライン.libを作りました.