Как я могу собрать программу, используя драйвер 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++
Это решение удалось на машине со следующими характеристиками:
- Windows XP SP3 32-разрядная
- 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 сделала свое дело. Вы можете скачать его здесь:
Я скачал самораспаковывающийся 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;