MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Construire le pilote MongoDB C sous Windows

Il semble que le portage de libsasl2 vers Windows ne soit pas terminé. Bien que j'ai finalement réussi à compiler libsasl, aucune libsasl2 n'a été produite. Il semble que SASL soit utilisé par le pilote MongoDB C pour Kerberos. Je ne sais pas s'ils ont essayé de faire fonctionner Kerberos avec le pilote C sous Windows sans un portage de la bibliothèque libsasl2.

J'ai cependant réussi à compiler le pilote MongoDB C. J'ai d'abord essayé de compiler en utilisant des sous-répertoires de C:\, par opposition à C:\mongo-c-driver etc., mais cela n'a pas bien fonctionné, mais lorsque j'ai compilé en utilisant la structure de répertoires dans la documentation, la compilation a réussi.

Pour le faire compiler, j'ai désactivé la bibliothèque SASL dans la compilation. Je ne pense pas que cela sera nécessaire à moins que vous n'ayez besoin d'utiliser Kerberos. J'ai d'abord dû désactiver explicitement SASL (peut-être à cause de l'utilisation de 64 bits) - cela peut être fait avec -DENABLE_SASL=no lors de la compilation du pilote mongo-c.

Voici les étapes :

Vous avez la source du pilote sur cette page :https://github.com/mongodb/mongo- c-pilote/versions (1.3.5)

Obtenu cmake de https://cmake.org/download/

cmake installé à l'aide du programme d'installation de Windows, en ajoutant cmake au chemin pour tous les utilisateurs. J'ai dû me déconnecter et me reconnecter pour obtenir le chemin de mise à jour.

Ensuite, j'ai copié la source mongo-c-driver-1.3.5 vers c:\mongo-c-driver-1.3.5

Ensuite,

J'ai utilisé l'invite de commande Visual Studio MSBuild, commencé par Exécuter en tant qu'administrateur

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

Il s'avère que les compilateurs C ne sont pas installés avec une installation standard de Visual Studio, j'ai donc dû installer le composant C++ de Visual Studio. J'ai installé C++ Common Tools, mais pas MFC pour C++ ni XP Support. Cela dit, il utiliserait 3 Go d'espace disque (commencé à 39,5, terminé à 37,0, donc 2,5 Go utilisés)

Une fois installé :

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 n'était pas présent, j'ai donc obtenu 32 bits Win32 OpenSSL v1.0.2h de http://slproweb. com/products/Win32OpenSSL.html

Ensuite, j'ai installé OpenSSL. J'ai changé le répertoire d'installation en C:\work\OpenSSL-Win32, et j'ai autorisé le programme d'installation d'OpenSSL à installer les binaires dans le répertoire système de Windows

Maintenant,

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

Et maintenant, le mongo-c-driver a été construit. Je peux l'utiliser avec Visual C++ pour me connecter à mon serveur MongoDB en utilisant ssl.

Maintenant, j'essaie de comprendre comment faire en sorte que Embarcadero RADStudio C++ Builder utilise le nouveau pilote mongo-c. Le simple fait de copier les fichiers .dll dans le dossier de l'application entraîne un abandon dans la dll bson. La trace de la pile ressemble à ceci :