Похоже, что порт libsasl2 для Windows не является полным. Хотя я в конечном итоге получил libsasl для компиляции, не было создано libsasl2. Похоже, что SASL используется MongoDB C Driver для Kerberos. Я не знаю, пытались ли они заставить Kerberos работать с C-драйвером на Windows без порта библиотеки libsasl2.
Я, однако, смог в конечном итоге скомпилировать драйвер MongoDB C. Сначала я попытался скомпилировать, используя подкаталоги C: \, в отличие от C: \ mongo-c-driver и т. Д., Но это не сработало, но когда я скомпилировал, используя структуру каталогов в документации, компиляция прошла успешно.
Чтобы скомпилировать его, я отключил библиотеку SASL в компиляции. Я не думаю, что это будет необходимо, если вам не нужно использовать Kerberos. Сначала мне пришлось явно отключить SASL (возможно, из-за использования 64-битного) - это можно сделать с помощью -DENABLE_SASL=no
при компиляции mongo-c-драйвера.
Вот шаги:
Got источник драйвера с этой страницы: https://github.com/mongodb/mongo-c-driver/releases (1.3.5)
Got CMake от https://cmake.org/download/
Installed CMake с помощью установщика Windows, добавляя CMake в путь для всех пользователей. Мне пришлось выйти из системы и войти в систему, чтобы получить путь к обновлению.
Затем я скопировал источник mongo-c-driver-1.3.5 в c: \ mongo-c-driver-1.3.5
Затем
Я использовал Visual Studio MSBuild Командная строка началась с 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".
Оказывается, что компиляторы не установлены со стандартной установкой Visual Studio, так Мне пришлось установить компонент C++ Visual Studio. Я установил C++ Common Tools, но не MFC для C++ и XP. Тем не менее было бы использовать 3 Гб дискового пространства (начал в 39.5, закончилось в 37,0, так что 2,5 ГБ используется)
После того, что было установлено:
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 не присутствовал, так что получается 32 бит Win32 OpenSSL v1.0.2h от http://slproweb.com/products/Win32OpenSSL.html
Затем я установил OpenSSL. Изменен каталог установки на C: \ работа \ OpenSSL-Win32, и я позволил инсталлятор OpenSSL для установки бинарных файлов в системный каталог Windows,
Теперь
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
А теперь Монго-с-водитель был построен. Я могу использовать его с Visual C++ для подключения к моему серверу MongoDB с помощью ssl.
Теперь, я пытаюсь выяснить, как получить Embarcadero RADStudio C++ Builder, чтобы использовать новый mongo-c-драйвер. Простое копирование .dll в папку приложения приводит к прерыванию в dll bson. Трассировка стека выглядит следующим образом:
Хотя это работает (спасибо!), Имейте в виду, что он по умолчанию конфигурации отладки ... Для того, чтобы построить другие конфиги (доступны: ' Debug ',' Release', 'MinSizeRel' и' RelWithDebInfo') добавляют соответствующий аргумент командам msbuild, например 'msbuild.exe ALL_BUILD.vcxproj/p: Configuration = Release',' msbuild.exe INSTALL.vcxproj/p: Configuration = Release' –