2016-05-22 17 views
5

私がこれまでにしたこと

私はthe installation guideを読んでいます。WindowsでMongoDB Cドライバを構築する

a setup fileをダウンロードした後、Windows用OpenSSLライブラリをインストールしました。

GitHubからMongo Cドライバディレクトリをダウンロードして抽出しました。

CMake web siteからダウンロード後にCMake for Windowsをインストールしました。

mongo-c-driver/src/libbsonに行き、cmake -G "Visual Studio 14 2015 Win64"を実行して、(多分)成功を表示します。

D:\works\test\mongo-c-driver\src\libbson>cmake -G "Visual Studio 14 2015 Win64" Current version (from VERSION_CURRENT file): 1.4.0-dev Previous release (from VERSION_RELEASED file): 1.3.5 -- Check if the system is big endian -- Searching 16 bit integer -- Looking for sys/types.h -- Looking for sys/types.h - found -- Looking for stdint.h -- Looking for stdint.h - found -- Looking for stddef.h -- Looking for stddef.h - found -- Check size of unsigned short -- Check size of unsigned short - done -- Using unsigned short -- Check if the system is big endian - little endian -- Looking for snprintf -- Looking for snprintf - found -- Looking for _set_output_format -- Looking for _set_output_format - not found -- Performing Test BSON_HAVE_TIMESPEC -- Performing Test BSON_HAVE_TIMESPEC - Success -- struct timespec found -- Configuring done -- Generating done -- Build files have been written to: D:/works/test/mongo-c-driver/src/libbson

msbuild ALL_BUILD.vcxprojを実行し、成功を印刷します。

問題

mongo-c-driverに行き、 `cmakeのの-G "Visual Studioの14 2015のWin64" を実行して、このようなエラーを出力します。

-- Found BSON: BSON-NOTFOUND;ws2_32
-- Found OpenSSL: optimized;D:/apps/OpenSSL-Win64/lib/VC/ssleay32MD.lib;debug;D:/apps/OpenSSL-Win64/lib/VC/ssleay32MDd.lib;optimized;D:/apps/OpenSSL-Win64/lib/VC/libeay32MD.lib;debug;D:/apps/OpenSSL-Win64/lib/VC/libeay32MDd.lib (found version "1.0.2h") -- Searching for sasl/sasl.h -- Not found (specify -DCMAKE_INCLUDE_PATH=C:/path/to/sasl/include for SASL support) -- Searching for libsasl2 -- Not found (specify -DCMAKE_LIBRARY_PATH=C:/path/to/sasl/lib for SASL support) -- Configuring incomplete, errors occurred! See also "D:/works/test/mongo-c-driver/CMakeFiles/CMakeOutput.log".

私は自分のディスクからsasl.hを探したが、どれもありません。私もOpenSSL GitHubからそれを探しましたが、sasl.hを持っていません

私はhereからcyrus-saslをダウンロードして開きましたが、私はそれに固執しています。私はそれをどうするか分からない。

MongoDB Cドライバのビルドを成功させるにはどうすればよいですか?

答えて

3

Windowsへのlibsasl2ポートが完全ではないようです。私は最終的にlibsaslをコンパイルしましたが、libsasl2は生成されませんでした。 SASLはMongoDB CドライバでKerberos用に使用されているようです。 libsasl2ライブラリのポートなしでWindows上のCドライバを使ってKerberosを動作させようとしたのかどうかはわかりません。

しかし私はMongoDB Cドライバを最終的にコンパイルすることができました。私は最初はC:\ mongo-c-driverなどとは対照的に、C:\のサブディレクトリを使ってコンパイルしようとしましたが、うまくいきませんでしたが、ドキュメントのディレクトリ構造を使ってコンパイルしたところ、コンパイルは成功しました。

コンパイルするには、コンパイルでSASLライブラリを無効にしました。 Kerberosを使用する必要がない限り、私はそれが必要とは思われません。私は最初、明示的にSASLを無効にしなければなりませんでした。おそらく64ビットを使用しているからです。これは、mongo-cドライバをコンパイルするときに-DENABLE_SASL=noで行うことができます。ここで

は、手順は次のとおりです。このページから

ガット・ドライバ・ソース:https://github.com/mongodb/mongo-c-driver/releases(1.3.5)のWindowsインストーラを使用してhttps://cmake.org/download/

インストールcmakeのから

ガットのcmakeの、パスにcmakeのを追加しますすべてのユーザーに適用されます。ログアウトしてからログインして、更新するパスを取得する必要がありました。

次に、mongo-c-driver-1.3.5ソースをc:\ mongo-c-driver-1.3にコピーしました。私は、Visual StudioのMSBuildコマンドプロンプトを使用

その後5

は、そう、

C:\mongo-c-driver-1.3.5\src\libbson>cmake -DCMAKE_INSTALL_PREFIX=C:\libmongoc -G "Visual Studio 14" 
-- The C compiler identification is unknown 
-- The CXX compiler identification is unknown 
CMake Error at CMakeLists.txt:3 (project): 
    No CMAKE_C_COMPILER could be found. 

CMake Error at CMakeLists.txt:3 (project): 
    No CMAKE_CXX_COMPILER could be found. 

-- Configuring incomplete, errors occurred! 
See also "C:/mongo-c-driver-1.3.5/src/libbson/CMakeFiles/CMakeOutput.log". 
See also "C:/mongo-c-driver-1.3.5/src/libbson/CMakeFiles/CMakeError.log". 

は、Cコンパイラは、Visual Studioの標準インストールでインストールされていないことが判明した管理者として実行を開始しますVisual StudioのC++コンポーネントをインストールする必要がありました。私はC++の共通ツールをインストールしましたが、C++やXPサポートのためのMFCはインストールしませんでした。それはそれがインストールされた後は、それは(そう2.5ギガバイトを使用し、37.0で終了、39.5で開始)

をディスクスペースの3ギガバイトを使用すると述べた。

cd \mongo-c-driver-1.3.5\src\libbson 
cmake -DCMAKE_INSTALL_PREFIX=C:\libmongoc -G "Visual Studio 14" . 
msbuild.exe ALL_BUILD.vcxproj 
msbuild.exe INSTALL.vcxproj 
cd ..\.. 

C:\mongo-c-driver-1.3.5>cmake -DCMAKE_INSTALL_PREFIX=C:\libmongoc -DENABLE_SSL=WINDOWS -DBSON_ROOT_DIR=C:\libmongoc -G "Visual Studio 14" . 
-- The C compiler identification is MSVC 19.0.23026.0 
-- The CXX compiler identification is MSVC 19.0.23026.0 
-- Check for working C compiler using: Visual Studio 14 2015 
-- Check for working C compiler using: Visual Studio 14 2015 -- works 
-- Detecting C compiler ABI info 
-- Detecting C compiler ABI info - done 
-- Check for working CXX compiler using: Visual Studio 14 2015 
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works 
-- Detecting CXX compiler ABI info 
-- Detecting CXX compiler ABI info - done 
-- Detecting CXX compile features 
-- Detecting CXX compile features - done 
-- Found BSON: C:/libmongoc/lib/bson-1.0.lib;ws2_32 
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR) 
-- Searching for sasl/sasl.h 
-- Not found (specify -DCMAKE_INCLUDE_PATH=C:/path/to/sasl/include for SASL support) 
-- Searching for libsasl2 
-- Not found (specify -DCMAKE_LIBRARY_PATH=C:/path/to/sasl/lib for SASL support) 
Current version (from VERSION_CURRENT file): 1.3.5 
-- Configuring done 
-- Generating done 
-- Build files have been written to: C:/mongo-c-driver-1.3.5 

OpenSSLが存在していなかったので、私は32ビットを取得しましたWin32 OpenSSL v1.0.2h from http://slproweb.com/products/Win32OpenSSL.html

次に、私はOpenSSLをインストールしました。 Cへの変更インストールディレクトリ:\作業\ OpenSSLの-Win32のは、私は、Windowsのシステムディレクトリ今

C:\mongo-c-driver-1.3.5>cmake -DCMAKE_INSTALL_PREFIX=C:\libmongoc -DENABLE_SSL=WINDOWS -DBSON_ROOT_DIR=C:\libmongoc -G "Visual Studio 14" . 
-- Found OpenSSL: optimized;C:/work/OpenSSL-Win32/lib/VC/ssleay32MD.lib;debug;C:/work/OpenSSL-Win32/lib/VC/ssleay32MDd.lib;optimized;C:/work/OpenSSL-Win32/lib/VC/libeay32MD.lib;debug;C:/work/OpenSSL-Win32/lib/VC/libeay32MDd.lib (found version "1.0.2h") 
-- Searching for sasl/sasl.h 
-- Not found (specify -DCMAKE_INCLUDE_PATH=C:/path/to/sasl/include for SASL support) 
-- Searching for libsasl2 
-- Not found (specify -DCMAKE_LIBRARY_PATH=C:/path/to/sasl/lib for SASL support) 
Current version (from VERSION_CURRENT file): 1.3.5 
-- Configuring done 
-- Generating done 
-- Build files have been written to: C:/mongo-c-driver-1.3.5 

C:\mongo-c-driver-1.3.5> 

msbuild.exe ALL_BUILD.vcxproj 
(lots of output, with some yellow warnings, but no red errors) 

msbuild.exe INSTALL.vcxproj 

をバイナリをインストールするには、OpenSSLのインストーラを許さそして今のmongo-C-ドライバが持っています建てられた。私はVisual C++でそれを使用して、sslを使用してMongoDBサーバーに接続できます。

今、私はEmbarcadero RADStudio C++ Builderに新しいmongo-cドライバを使用させる方法を理解しようとしています。 .dllをアプリケーションのフォルダにコピーするだけで、bson dllが中止されます。

Screenshot showing stack trace

2

その出力の2個のエラーがあります。スタックトレースは次のようになります。 - libbsonがインストールされ、利用可能な されなければならない - mongocは、サイラスのSASLに対して構成され、それをインストールする必要があり、その場合、及び利用可能な

両方を容易に固定可能であり、mongocそれ以降のバージョンなくなりエラー場合サイラスのSASLまたはのOpenSSL ISN代わりにWindowsネイティブ実装を使用します。ドライバは、ドライバなしで設定することもできます。 可能な設定オプションと値は次のとおりです。残念ながらmongocのcmakeインストールが自動的にバンドルさlibbsonをインストールしません

-DENABLE_SASL=[CYRUS|SSPI|AUTO|OFF] 
-DENABLE_SSL=[OPENSSL|WINDOWS|DARWIN|AUTO|OFF] 

、これは将来的に固定することができるが、今のところ、あなたは個別にそれをインストールする必要があります。

ダウンロード&エキスmongoc(https://github.com/mongodb/mongo-c-driver/releases):要するに

は、Windows上でmongocドライバをインストールします。 mongocリリースにはlibbsonソースが付属しているので、それらを別々にダウンロードする必要はありません。 、その後、「SRC/libbson」とlibbsonディレクトリを入力します。

cd c:/path/to/mongoc/ 
cd src/libbson 

# Configure and install libbson 
cmake.exe -G "Visual Studio 14 2015 Win64" \ 
    -DCMAKE_INSTALL_PREFIX=c:/mongoc 
msbuild.exe ALL_BUILD.vcxproj 
msbuild.exe INSTALL.vcxproj # Installs libbson 

cd ../.. # Go back to the root folder of the release sources 

# Configure and install mongoc 
cmake.exe -G "Visual Studio 14 2015 Win64" \ 
    -DCMAKE_INSTALL_PREFIX=c:/mongoc \ 
    -DCMAKE_PREFIX_PATH=c:/mongoc/lib/cmake \ 
    -DENABLE_AUTOMATIC_INIT_AND_CLEANUP:BOOL=OFF \ 
    -DENABLE_SSL=WINDOWS \ # Use Windows Native TLS, rather then OpenSSL 
    -DENABLE_SASL=SSPI # Use Windows Native SSPI, rather then Cyrus SASL 
msbuild.exe ALL_BUILD.vcxproj 
msbuild.exe INSTALL.vcxproj 
+0

を、これは動作しますが(ありがとう!)、デバッグ構成がデフォルトに...利用可能である(他のconfigsを構築するにことに注意してください: ' Debug、Release、MinSizeRel、RelWithDebInfo)は、対応する引数をmsbuildコマンドに追加します。 'msbuild.exe ALL_BUILD.vcxproj/p:設定=リリース'、 'msbuild.exe INSTALL.vcxproj/p:設定=解放' –

関連する問題