Es scheint, dass der libsasl2-Anschluss an Windows nicht vollständig ist. Obwohl ich libsasl zum kompilieren bekommen habe, wurde libsasl2 nicht erzeugt. Es scheint, dass SASL von MongoDB C Driver für Kerberos verwendet wird. Ich weiß nicht, ob sie versucht haben, Kerberos mit dem C-Treiber unter Windows ohne einen Port der libsasl2-Bibliothek arbeiten zu lassen.
Ich war jedoch in der Lage, den MongoDB C-Treiber schließlich kompilieren zu bekommen. Ich habe zunächst versucht, mit Unterverzeichnissen von C: \ zu kompilieren, im Gegensatz zu C: \ mongo-c-driver usw., aber das funktionierte nicht gut, aber als ich mit der Verzeichnisstruktur in der Dokumentation kompilierte, war die Kompilierung erfolgreich.
Um es kompilieren zu lassen, habe ich die SASL-Bibliothek in der Kompilierung deaktiviert. Ich denke nicht, dass es erforderlich sein wird, wenn Sie Kerberos verwenden müssen. Ich musste SASL zunächst explizit deaktivieren (vielleicht wegen der Verwendung von 64 Bit) - das kann mit -DENABLE_SASL=no
beim Kompilieren des Mongo-C-Treibers getan werden.
Hier sind die Schritte:
Got Treiberquelle auf dieser Seite: https://github.com/mongodb/mongo-c-driver/releases (1.3.5)
Got Cmake von https://cmake.org/download/
installiert Cmake das Windows Installer verwenden, das Hinzufügen Cmake auf den Weg für alle Benutzer. Ich musste mich abmelden und wieder anmelden, um den Pfad zum Update zu erhalten.
Dann habe ich die Quelle mongo-c-driver-1.3.5 nach c: \ mongo-c-driver-1.3 kopiert.Dann werden 5
,
ich die Visual Studio MSBuild Eingabeaufforderung verwendet, begann mit Ausführen als Administrator
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 der C-Compiler nicht mit einer Standard-Installation von Visual Studio installiert ist, so Ich musste C++ - Komponente von Visual Studio installieren. Ich habe C++ Common Tools, aber nicht MFC für C++ oder XP Support installiert. Das heißt es 3 GB Speicherplatz verwenden würde (begann bei 39,5, endete bei 37,0, also 2,5 GB)
Sobald das installiert wurde:
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, so erhaltene I 32 bit Win32 OpenSSL v1.0.2h von http://slproweb.com/products/Win32OpenSSL.html
Dann habe ich OpenSSL installiert. Geänderte Installationsverzeichnis C: \ work \ OpenSSL-Win32 und ließ ich den OpenSSL-Installer die Binärdateien in das Windows-Systemverzeichnis
Jetzt
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
, installieren und jetzt die Mongo-c-Fahrer wurde gebaut. Ich kann es mit Visual C++ verwenden, um eine Verbindung zu meinem MongoDB-Server mit SSL herzustellen.
Jetzt versuche ich herauszufinden, wie Embarcadero RADStudio C++ Builder den neuen mongo-c-Treiber verwenden kann. Das Kopieren der .dlls in den Anwendungsordner führt zu einem Abbruch in der bson dll. Der Stack-Trace sieht wie folgt aus:
Das funktioniert zwar (danke!), Denken Sie daran, dass es standardmäßig Debug-Konfiguration ... andere configs zu bauen (verfügbar sind: ' Debug ',' Release', 'MinSizeRel' und' RelWithDebInfo') fügen ein entsprechendes Argument zu Msbuild-Befehlen hinzu, z 'msbuild.exe ALL_BUILD.vcxproj/p: Konfiguration = Freigeben',' msbuild.exe INSTALL.vcxproj/p: Konfiguration = Freigeben' –