Wygląda na to, że port libsasl2 do systemu Windows nie jest kompletny. Chociaż ostatecznie skompilowałem libsasl, nie było produkowanego libsasl2. Wygląda na to, że SASL jest używany przez sterownik MongoDB C dla Kerberos. Nie wiem, czy próbowali uruchomić Kerberos ze sterownikiem C w systemie Windows bez portu biblioteki libsasl2.
Udało mi się jednak ostatecznie skompilować sterownik MongoDB C. Początkowo próbowałem kompilować przy użyciu podkatalogów C:\, w przeciwieństwie do C:\mongo-c-driver itp., ale to nie działało dobrze, ale kiedy kompilowałem przy użyciu struktury katalogów w dokumentacji, kompilacja się powiodła.
Aby go skompilować, wyłączyłem bibliotekę SASL w kompilacji. Nie sądzę, że będzie to potrzebne, chyba że musisz użyć Kerberos. Początkowo musiałem jawnie wyłączyć SASL (być może z powodu użycia 64-bitowego) - można to zrobić za pomocą -DENABLE_SASL=no
podczas kompilacji sterownika mongo-c.
Oto kroki:
Pobrano źródło sterownika z tej strony:https://github.com/mongodb/mongo- c-sterownik/wydania (1.3.5)
Otrzymałem cmake z https://cmake.org/download/
Zainstalowano cmake za pomocą instalatora Windows, dodając cmake do ścieżki dla wszystkich użytkowników. Musiałem się wylogować i zalogować ponownie, aby uzyskać ścieżkę aktualizacji.
Następnie skopiowałem źródło mongo-c-driver-1.3.5 do c:\mongo-c-driver-1.3.5
Następnie
Użyłem wiersza polecenia programu Visual Studio MSBuild, zacząłem od Uruchom jako 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".
Okazuje się, że kompilatory C nie są instalowane ze standardową instalacją Visual Studio, więc musiałem zainstalować komponent C++ Visual Studio. Zainstalowałem C++ Common Tools, ale nie MFC for C++ ani XP Support. Powiedział, że zużyje 3 GB miejsca na dysku (zaczynając od 39,5, kończąc na 37,0, więc wykorzystano 2,5 GB)
Po zainstalowaniu:
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 nie był obecny, więc uzyskałem 32-bitowy Win32 OpenSSL v1.0.2h z http://slproweb. com/products/Win32OpenSSL.html
Następnie zainstalowałem OpenSSL. Zmieniłem katalog instalacyjny na C:\work\OpenSSL-Win32 i pozwoliłem instalatorowi OpenSSL na zainstalowanie binariów w katalogu systemowym Windows
Teraz
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 teraz zbudowano mongo-c-driver. Mogę go używać z Visual C++, aby połączyć się z moim serwerem MongoDB za pomocą ssl.
Teraz próbuję dowiedzieć się, jak sprawić, by Embarcadero RADStudio C++ Builder używał nowego sterownika mongo-c-driver. Samo skopiowanie plików .dll do folderu aplikacji powoduje przerwanie działania biblioteki bson dll. Ślad stosu wygląda tak: