sql >> Databáze >  >> NoSQL >> MongoDB

Vytváření ovladače MongoDB C ve Windows

Zdá se, že port libsasl2 pro Windows není kompletní. I když se mi nakonec podařilo zkompilovat libsasl, nebyl vytvořen žádný libsasl2. Zdá se, že SASL používá MongoDB C Driver pro Kerberos. Nevím, jestli se pokusili přimět Kerberos pracovat s ovladačem C ve Windows bez portu knihovny libsasl2.

Podařilo se mi však získat ovladač MongoDB C, aby se nakonec zkompiloval. Zpočátku jsem se snažil kompilovat pomocí podadresářů C:\, na rozdíl od C:\mongo-c-driver atd., ale nefungovalo to dobře, ale když jsem kompiloval pomocí adresářové struktury v dokumentaci, kompilace uspěla.

Abych to zkompiloval, zakázal jsem knihovnu SASL v kompilaci. Nemyslím si, že to bude potřeba, pokud nepotřebujete používat Kerberos. Nejprve jsem musel výslovně zakázat SASL (možná kvůli použití 64bitové verze) – to lze provést pomocí -DENABLE_SASL=no při kompilaci mongo-c-driveru.

Zde jsou kroky:

Zdroj ovladače z této stránky:https://github.com/mongodb/mongo- c-ovladač/vydání (1.3.5)

Mám cmake od https://cmake.org/download/

Nainstalován cmake pomocí instalačního programu systému Windows a přidání cmake do cesty pro všechny uživatele. Musel jsem se odhlásit a znovu přihlásit, abych získal cestu k aktualizaci.

Poté jsem zkopíroval zdroj mongo-c-driver-1.3.5 do c:\mongo-c-driver-1.3.5

Poté

Použil jsem Visual Studio MSBuild Command Prompt, který začal s Run As 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".

Ukázalo se, že kompilátory C nejsou nainstalovány se standardní instalací sady Visual Studio, takže jsem musel nainstalovat komponentu C++ sady Visual Studio. Nainstaloval jsem C++ Common Tools, ale ne MFC pro C++ ani XP Support. To znamená, že bude využívat 3 GB místa na disku (začal na 39,5, skončil na 37,0, takže využito 2,5 GB)

Po instalaci:

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 nebylo přítomno, takže jsem získal 32bitový Win32 OpenSSL v1.0.2h z http://slproweb. com/products/Win32OpenSSL.html

Poté jsem nainstaloval OpenSSL. Změnil jsem instalační adresář na C:\work\OpenSSL-Win32 a povolil jsem instalačnímu programu OpenSSL nainstalovat binární soubory do systémového adresáře Windows

Nyní,

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

A nyní byl postaven ovladač mongo-c. Mohu jej použít s Visual C++ pro připojení k mému serveru MongoDB pomocí ssl.

Nyní se snažím přijít na to, jak přimět Embarcadero RADStudio C++ Builder, aby používal nový ovladač mongo-c-driver. Pouhé zkopírování .dll do složky aplikace má za následek přerušení v bson dll. Trasování zásobníku vypadá takto:



  1. MongoRepository findByCreatedAtBetween nevrací přesné výsledky

  2. Jak mohu zjistit neúspěšnou událost opětovného připojení mongodb

  3. Jak třídit mongodb pomocí pymongo

  4. Jak získat více řádků do seznamu odděleného čárkami v SQL