MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Membangun Driver MongoDB C di Windows

Tampaknya port libsasl2 ke Windows tidak lengkap. Meskipun saya akhirnya mendapatkan libsasl untuk dikompilasi, tidak ada libsasl2 yang diproduksi. Tampaknya SASL digunakan oleh Driver MongoDB C untuk Kerberos. Saya tidak tahu apakah mereka telah mencoba membuat Kerberos bekerja dengan Driver C di Windows tanpa port pustaka libsasl2.

Namun, saya bisa mendapatkan Driver MongoDB C untuk akhirnya dikompilasi. Saya awalnya mencoba mengkompilasi menggunakan subdirektori C:\, sebagai lawan dari C:\mongo-c-driver dll., tetapi itu tidak berhasil dengan baik, tetapi ketika saya mengkompilasi menggunakan struktur direktori dalam dokumentasi, kompilasi berhasil.

Untuk mengkompilasinya, saya menonaktifkan perpustakaan SASL dalam kompilasi. Saya tidak berpikir itu akan diperlukan kecuali Anda perlu menggunakan Kerberos. Saya awalnya harus secara eksplisit menonaktifkan SASL (mungkin karena menggunakan 64 bit) -- yang dapat dilakukan dengan -DENABLE_SASL=no saat mengkompilasi mongo-c-driver.

Berikut langkah-langkahnya:

Dapatkan sumber driver dari halaman ini:https://github.com/mongodb/mongo- c-driver/rilis (1.3.5)

Dapatkan cmake dari https://cmake.org/download/

Menginstal cmake menggunakan penginstal Windows, menambahkan cmake ke jalur untuk semua pengguna. Saya harus keluar dan masuk kembali untuk mendapatkan jalur pembaruan.

Kemudian, saya menyalin sumber mongo-c-driver-1.3.5 ke c:\mongo-c-driver-1.3.5

Kemudian,

Saya menggunakan Visual Studio MSBuild Command Prompt, dimulai dengan 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".

Ternyata compiler C tidak diinstal dengan instalasi standar Visual Studio, jadi saya harus menginstal komponen C++ Visual Studio. Saya menginstal C++ Common Tools, tetapi tidak MFC untuk C++ atau XP Support. Yang mengatakan itu akan menggunakan ruang disk 3 GB (mulai dari 39,5, berakhir pada 37,0, jadi digunakan 2,5 GB)

Setelah itu diinstal:

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 tidak ada, jadi saya memperoleh 32 bit Win32 OpenSSL v1.0.2h dari http://slproweb. com/products/Win32OpenSSL.html

Kemudian, saya menginstal OpenSSL. Mengubah direktori instalasi menjadi C:\work\OpenSSL-Win32, dan saya mengizinkan penginstal OpenSSL untuk menginstal binari ke dalam direktori sistem Windows

Sekarang,

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

Dan sekarang mongo-c-driver telah dibuat. Saya dapat menggunakannya dengan Visual C++ untuk terhubung ke server MongoDB saya menggunakan ssl.

Sekarang, saya mencoba mencari cara agar Embarcadero RADStudio C++ Builder menggunakan driver mongo-c yang baru. Hanya menyalin .dll ke dalam folder aplikasi akan mengakibatkan pembatalan di bson dll. Jejak tumpukan terlihat seperti ini:



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nilai Bidang Bersarang Kueri Mongo dengan kunci induk dua tingkat yang tidak diketahui

  2. Handlebars:Akses telah ditolak untuk menyelesaikan properti dari karena itu bukan milik sendiri dari induknya

  3. Cara menjalankan mongodb dengan membuat akun

  4. Pekerjaan apa pun dengan kunci Mongodb tidak dapat berisi file . atau $?

  5. Enkripsi/Dekripsi properti saat menulis/membaca ke c# mongo db