Как я могу собрать программу, используя драйвер C++ от mongodb?

Подскажите, пожалуйста, как собрать программу с использованием драйвера C++ от mongodb. Нет пламени о моем плохом английском.

Моя среда

  • Windows7 64bit
  • Visual Studio Ultimate 2012 (целевой проект x64 Release)

Я выполнил следующие шаги.

  • Я установил Ptython 2.7.2, расширения Python для Windows и Scons 2.3.0.
  • Я установил Boost 1.54.0. Я выполнил 'boostrap' и 'b2 -a --build-type=complete --address-model=64 --link=static --runtime-link=static'
  • Я загружаю mongodb-linux-x86_64-v2.4-latest.tgz.
  • Я добавил следующие тексты в SConstruct.

    env.Append(CPPPATH=['C:\\boost\\boost_1_54_0'])
    env.Append(LIBPATH=['C:\\boost\\boost_1_54_0\\stage\\lib'])
    env.Append(CPPDEFINES=["_UNICODE"])
    env.Append(CPPDEFINES=["UNICODE"])
    
  • Я исполнил "scons mongoclient".

  • Я сделал проект Visual Studio C++.
  • Я установил "Release" и "x64" в проекте.
  • На страницах свойств / Свойства конфигурации /C C++/ Общие / Дополнительные каталоги включения я установил 'C:\boost\boost_1_54_0' и 'C:\mongo\mongo-cxx-driver-v2.4\src'.
  • На страницах свойств / Свойства конфигурации / Компоновщик / Общие / Дополнительные каталоги библиотек я установил "C:\boost\boost_1_54_0\stage\lib" и "C: \ mongo \ mongo-cxx-driver-v2.4".
  • На страницах свойств / свойств конфигурации / компоновщика / ввода / дополнительных зависимостей я установил "mongoclient.lib", "ws2_32.lib" и "psapi.lib".
  • На страницах свойств / свойств конфигурации / компоновщика / ввода / игнорирования определенных библиотек по умолчанию я устанавливаю msvcprt.lib и LIBCMT.lib.
  • На страницах свойств / Свойства конфигурации /C C++/ Препроцессор / Определения препроцессора я устанавливаю "_CRT_SECURE_NO_WARNINGS".
  • На страницах свойств / Свойства конфигурации /C C++/ Генерация кода / Библиотека времени выполнения я установил "Многопоточный (/MT)".

Я сделал программу, используя драйвер. Однако построить решение программы не удалось.

1>mongoclient.lib(stringutils.obj) : error LNK2001: unresolved external symbol __security_check_cookie
1>mongoclient.lib(initializer_dependency_graph.obj) : error LNK2001: unresolved external symbol __security_check_cookie
1>mongoclient.lib(initializer.obj) : error LNK2001: unresolved external symbol __security_check_cookie
....
 fatal error LNK1120: 154 unresolved externals

Если бы мне помогли, если бы вы указали на что-то странное в шагах.

Спасибо.

2 ответа

Как собрать драйвер MongoDB C++

Это решение удалось на машине со следующими характеристиками:

  1. Windows XP SP3 32-разрядная
  2. Visual Studio Express 2010 (VC 10)

Я использовал D:\MongoDBcplusplusClient в качестве рабочего каталога (я установил все необходимые условия).

Процесс:

  • Шаг 1

Скачать драйвер MongoDB C++:

https://github.com/mongodb/mongo-cxx-driver

Вы можете сделать клон с помощью Git или загрузить его в виде файла.zip (я сделал второй). Вы получите файл, например mongo-cxx-driver-legacy.zip. Распакуйте его в папку mongo-cxx-driver-legacy внутри вашего рабочего каталога.

  • Шаг 2

Скачать Boost готовые файлы Windows. ВНИМАНИЕ!!! Вы должны использовать определенную версию Boost. В моем случае версия 1.52 сделала свое дело. Вы можете скачать его здесь:

http://boost.teeks99.com/

Я скачал самораспаковывающийся exe boost_1_52_0-vc32-bin.exe. Поместите его в свой рабочий каталог и запустите. Это создаст папку (что-то вроде lib32), которая будет содержать бинарные файлы boost (.lib и.dll файлы)

  • Шаг 3

Загрузите исходный код Boost (файлы.h). Конечно, они должны быть из той же версии, что и в шаге 2. Я скачал их отсюда:

http://sourceforge.net/projects/boost/files/boost/1.52.0/

Вы получите файл boost_1_52_0.zip, который вы можете извлечь в папке boost_1_52_0.

  • Шаг 4

Загрузите Python. В этом примере я скачал версию 2.7.9 и, в частности, установщик MSI для Windows x86 отсюда:

https://www.python.org/downloads/release/python-279/

  • Шаг 5

Скачать Scons отсюда:

http://www.scons.org/download.php

Я скачал установщик Windows (scons-2.3.4-setup.exe) и установил Scons в каталог Python (в моем случае C:\Python27).

  • Шаг 6

Загрузите msinttypes отсюда:

https://code.google.com/p/msinttypes/

(Вы должны включить эти заголовочные файлы в проект, который использует драйвер)

  • Шаг 7

Зайдите в Пуск-> Выполнить... и в поле Выполнить напишите cmd. В открывшемся окне командной строки перейдите к папке, в которую вы извлекли драйвер Монго на шаге 1. В моем случае я сделал: cd D:\ D:\MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy

  • Шаг 8

Постройте драйвер, используя Scons. В каталоге, по которому вы перешли на шаге 7, напишите:

SCons

prefix = D:\MongoDBcplusplusClient \ Монго-CXX-водитель-наследие \ Монго-CXX-водитель-наследие

--cpppath = D:\MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0

--libpath = D:\MongoDBcplusplusClient \ lib32

--win-version-min = xpsp3 установить

и нажмите Enter.

Флаг --prefix указывает целевой каталог, в котором будет создан .lib- файл драйвера, --cpppath указывает папку, в которой находятся файлы заголовков Boost, и --libpath путь к файлам Boost .lib. Конечно, вы должны изменить путь на свой. Файл с именем libmongoclient-s.lib будет создан по пути --prefix/lib. Если вы хотите собрать драйвер с включенной отладкой, используйте следующую команду:

SCons

prefix = D:\MongoDBcplusplusClient \ Монго-CXX-водитель-наследие \ Монго-CXX-водитель-наследие

--cpppath = D:\MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0

--libpath = D:\MongoDBcplusplusClient \ lib32

--win-версия-мин = XPSP3

--dbg = при установке

Файл с именем libmongoclient-sgd.lib будет создан по пути --prefix/lib.

  • Шаг 9

В проводнике Windows перейдите в папку, в которой установлен драйвер MongoDB C++, перейдите в подпапку lib (в моем случае это был D:\MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy\lib) и переименуйте файл libmongoclient-s.lib в mongoclient.lib, а файл libmongoclient-sgd.lib - в mongoclient-gd.lib.

  • Шаг 10

Откройте Visual Studio 2010 Express и откройте проект, в котором вы хотите использовать драйвер MongoDB C++. Вы должны указать зависимости. Щелкните правой кнопкой мыши по названию проекта в обозревателе решений (левая колонка) и выберите Свойства. Перейдите в раздел C/C++ → Общие и в разделе Дополнительные каталоги включения добавьте:

a) Повысить каталог файлов заголовков (в моем случае D:\MongoDBcplusplusClient \ boost_1_52_0 \ boost_1_52_0)

b) Каталог файлов заголовков драйвера MongoDB C++ (в моем случае D:\MongoDBcplusplusClient \ mongo-cxx-driver-legacy \ mongo-cxx-driver legacy \ include)

c) Каталог файлов заголовков типов Cstdint (в моем случае:\MongoDBcplusplusClient\msinttypes-r26)

  • Шаг 11

Перейдите в Linker → General и в дополнительных каталогах библиотек добавьте:

a) Увеличьте каталог.lib файлов (в моем случае D:\MongoDBcplusplusClient \ lib32)

b) каталог.lib файлов драйвера MongoDB C++ (в моем случае D:\MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy\lib)

После этих шагов проект, использующий драйвер, будет успешно собран как в конфигурации выпуска, так и в конфигурации отладки.

Простое решение использовать vcpkg.

Загрузите vcpkg, следуя инструкциям, указанным в git. https://github.com/Microsoft/vcpkg

Шаг 1 C:\vcpkg>.\ Vcpkg search mongodb

вы увидите что-то подобное

mongo-c-driver 1.6.2-1 Клиентская библиотека, написанная на C для MongoDB.

Драйвер mongo-cxx 3.1.1-1 Драйвер MongoDB C++.

Шаг 2 C:.\ Vcpkg search mongodb установить mongo-cxx-драйвер

затем возьмите чашку кофе....

Степ 3

C: \ vcpkg>. \ Vcpkg интегрировать установить

Готово..

Примечание Предварительные условия:

Windows 10, 8.1 или 7

Visual Studio 2017 или Visual Studio 2015, обновление 3

просто импортировать

   #include <cstdint>
   #include <iostream>
   #include <vector>
   #include <bsoncxx/json.hpp>
   #include <mongocxx/client.hpp>
   #include <mongocxx/stdx.hpp>
   #include <mongocxx/uri.hpp>

     using bsoncxx::builder::stream::close_array;
     using bsoncxx::builder::stream::close_document;
     using bsoncxx::builder::stream::document;
     using bsoncxx::builder::stream::finalize;
     using bsoncxx::builder::stream::open_array;
     using bsoncxx::builder::stream::open_document;
Другие вопросы по тегам