MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Erstellen des MongoDB C-Treibers in Windows

Es scheint, dass die libsasl2-Portierung auf Windows nicht vollständig ist. Obwohl ich libsasl schließlich zum Kompilieren gebracht habe, wurde kein libsasl2 erstellt. Es scheint, dass SASL vom MongoDB C-Treiber für Kerberos verwendet wird. Ich weiß nicht, ob sie versucht haben, Kerberos mit dem C-Treiber unter Windows zum Laufen zu bringen, ohne eine Portierung der libsasl2-Bibliothek.

Ich war jedoch in der Lage, den MongoDB C-Treiber letztendlich zu kompilieren. Ich habe zunächst versucht, mit Unterverzeichnissen von C:\ zu kompilieren, im Gegensatz zu C:\mongo-c-driver usw., aber das hat nicht gut funktioniert, aber als ich mit der Verzeichnisstruktur in der Dokumentation kompiliert habe, war die Kompilierung erfolgreich.

Damit es kompiliert werden kann, habe ich die SASL-Bibliothek in der Kompilierung deaktiviert. Ich glaube nicht, dass es benötigt wird, es sei denn, Sie müssen Kerberos verwenden. Anfangs musste ich SASL explizit deaktivieren (vielleicht wegen der Verwendung von 64 Bit) – das kann mit -DENABLE_SASL=no gemacht werden beim Kompilieren des Mongo-C-Treibers.

Hier sind die Schritte:

Treiberquelle von dieser Seite erhalten:https://github.com/mongodb/mongo- c-driver/releases (1.3.5)

Cmake von https://cmake.org/download/ erhalten

Installierte cmake mit dem Windows-Installationsprogramm und fügte cmake zum Pfad für alle Benutzer hinzu. Ich musste mich abmelden und wieder anmelden, um den Pfad zum Aktualisieren zu erhalten.

Dann habe ich die mongo-c-driver-1.3.5-Quelle nach c:\mongo-c-driver-1.3.5

kopiert

Dann

Ich habe die MSBuild-Eingabeaufforderung von Visual Studio verwendet, gestartet mit „Als Administrator ausführen“

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

Es stellt sich heraus, dass die C-Compiler nicht mit einer Standardinstallation von Visual Studio installiert werden, also musste ich die C++-Komponente von Visual Studio installieren. Ich habe C++ Common Tools installiert, aber weder MFC für C++ noch XP Support. Das heißt, es würde 3 GB Speicherplatz beanspruchen (begonnen bei 39,5, endete bei 37,0, also 2,5 GB belegt)

Sobald das installiert war:

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 war nicht vorhanden, also habe ich 32-Bit-Win32 OpenSSL v1.0.2h von http://slproweb erhalten. com/products/Win32OpenSSL.html

Dann habe ich OpenSSL installiert. Das Installationsverzeichnis wurde in C:\work\OpenSSL-Win32 geändert, und ich habe dem OpenSSL-Installationsprogramm erlaubt, die Binärdateien im Windows-Systemverzeichnis zu installieren

Nun,

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

Und jetzt wurde der Mongo-C-Treiber gebaut. Ich kann es mit Visual C++ verwenden, um über SSL eine Verbindung zu meinem MongoDB-Server herzustellen.

Jetzt versuche ich herauszufinden, wie ich Embarcadero RADStudio C++ Builder dazu bringen kann, den neuen Mongo-C-Treiber zu verwenden. Nur das Kopieren der .dlls in den Ordner der Anwendung führt zu einem Abbruch in der bson dll. Der Stack-Trace sieht folgendermaßen aus: