MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Creazione del driver MongoDB C in Windows

Sembra che la porta libsasl2 su Windows non sia completa. Sebbene alla fine sia riuscito a compilare libsasl, non è stato prodotto libsasl2. Sembra che SASL sia utilizzato da MongoDB C Driver per Kerberos. Non so se hanno provato a far funzionare Kerberos con il driver C su Windows senza una porta della libreria libsasl2.

Tuttavia, sono stato in grado di ottenere la compilazione del driver MongoDB C. Inizialmente ho provato a compilare utilizzando le sottodirectory di C:\, al contrario di C:\mongo-c-driver ecc., ma non ha funzionato bene, ma quando ho compilato utilizzando la struttura di directory nella documentazione, la compilazione è riuscita.

Per farlo compilare, ho disabilitato la libreria SASL nella compilation. Non credo che sarà necessario a meno che non sia necessario utilizzare Kerberos. Inizialmente ho dovuto disabilitare esplicitamente SASL (forse a causa dell'utilizzo di 64 bit) -- che può essere fatto con -DENABLE_SASL=no durante la compilazione del driver mongo-c.

Ecco i passaggi:

Ho ottenuto la fonte del driver da questa pagina:https://github.com/mongodb/mongo- c-driver/release (1.3.5)

Ho ricevuto cmake da https://cmake.org/download/

Installato cmake usando il programma di installazione di Windows, aggiungendo cmake al percorso per tutti gli utenti. Ho dovuto disconnettermi e riconnettermi per ottenere il percorso da aggiornare.

Quindi, ho copiato il sorgente mongo-c-driver-1.3.5 in c:\mongo-c-driver-1.3.5

Quindi,

Ho usato il prompt dei comandi di Visual Studio MSBuild, iniziato con Esegui come amministratore

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".

Si scopre che i compilatori C non sono installati con un'installazione standard di Visual Studio, quindi ho dovuto installare il componente C++ di Visual Studio. Ho installato C++ Common Tools, ma non MFC per C++ né XP Support. Detto questo, utilizzerà 3 GB di spazio su disco (iniziato a 39,5, terminato a 37,0, quindi 2,5 GB utilizzati)

Una volta installato:

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 non era presente, quindi ho ottenuto Win32 OpenSSL v1.0.2h a 32 bit da http://slproweb. com/products/Win32OpenSSL.html

Quindi, ho installato OpenSSL. Directory di installazione modificata in C:\work\OpenSSL-Win32 e ho consentito al programma di installazione di OpenSSL di installare i binari nella directory di sistema di Windows

Ora,

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

E ora il mongo-c-driver è stato costruito. Posso usarlo con Visual C++ per connettermi al mio server MongoDB usando ssl.

Ora, sto cercando di capire come ottenere Embarcadero RADStudio C++ Builder per utilizzare il nuovo mongo-c-driver. La semplice copia dei .dll nella cartella dell'applicazione provoca un'interruzione nella dll bson. La traccia dello stack è simile a questa: