sql >> Database >  >> NoSQL >> MongoDB

MongoDB C-stuurprogramma bouwen in Windows

Het lijkt erop dat de libsasl2-poort naar Windows niet compleet is. Hoewel ik libsasl uiteindelijk heb laten compileren, is er geen libsasl2 geproduceerd. Het lijkt erop dat SASL wordt gebruikt door MongoDB C Driver voor Kerberos. Ik weet niet of ze geprobeerd hebben Kerberos te laten werken met het C-stuurprogramma op Windows zonder een poort van de libsasl2-bibliotheek.

Ik was echter in staat om de MongoDB C Driver uiteindelijk te compileren. Ik probeerde aanvankelijk te compileren met behulp van subdirectories van C:\, in tegenstelling tot C:\mongo-c-driver enz., maar dat werkte niet goed, maar toen ik compileerde met behulp van de directorystructuur in de documentatie, lukte het compileren.

Om het te laten compileren, heb ik de SASL-bibliotheek in de compilatie uitgeschakeld. Ik denk niet dat het nodig is, tenzij je Kerberos moet gebruiken. Ik moest SASL aanvankelijk expliciet uitschakelen (misschien vanwege het gebruik van 64 bit) -- dat kan worden gedaan met -DENABLE_SASL=no bij het compileren van de mongo-c-driver.

Dit zijn de stappen:

Stuurprogrammabron van deze pagina:https://github.com/mongodb/mongo- c-driver/releases (1.3.5)

Kreeg cmake van https://cmake.org/download/

Cmake geïnstalleerd met behulp van het Windows-installatieprogramma, cmake toegevoegd aan het pad voor alle gebruikers. Ik moest uitloggen en weer inloggen om het pad te krijgen om te updaten.

Vervolgens heb ik de broncode mongo-c-driver-1.3.5 gekopieerd naar c:\mongo-c-driver-1.3.5

Dan,

Ik gebruikte de Visual Studio MSBuild-opdrachtprompt, begonnen met Uitvoeren als beheerder

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

Blijkt dat de C-compilers niet zijn geïnstalleerd met een standaardinstallatie van Visual Studio, dus ik moest de C++-component van Visual Studio installeren. Ik heb C++ Common Tools geïnstalleerd, maar geen MFC voor C++ of XP Support. Dat gezegd hebbende, zou het 3 GB schijfruimte gebruiken (begonnen bij 39,5, eindigde op 37,0, dus 2,5 GB gebruikt)

Toen dat eenmaal was geïnstalleerd:

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 was niet aanwezig, dus ik heb 32 bit Win32 OpenSSL v1.0.2h verkregen van http://slproweb. com/products/Win32OpenSSL.html

Daarna heb ik OpenSSL geïnstalleerd. Installatiemap gewijzigd in C:\work\OpenSSL-Win32 en ik heb het OpenSSL-installatieprogramma toegestaan ​​de binaire bestanden in de Windows-systeemmap te installeren

Nu,

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

En nu is de mongo-c-driver gebouwd. Ik kan het gebruiken met Visual C++ om verbinding te maken met mijn MongoDB-server via ssl.

Nu probeer ik erachter te komen hoe ik Embarcadero RADStudio C++ Builder de nieuwe mongo-c-driver kan laten gebruiken. Het kopiëren van de .dll's naar de map van de toepassing resulteert in een afbreking in de bson dll. De stacktracering ziet er als volgt uit:



  1. Wat is het verschil tussen toGMTstring() en toUTCstring()?

  2. MongoDB C# Driver projectie $elemMatch $

  3. Is er een manier om het datumtype op te slaan als lokale tijd in MongoDB?

  4. Hoe maak ik verbinding met mongodb met node.js (en authenticeer ik)?