Я следовал инструкциям в следующем документе к письму (включая инструкции по сборке mongo-c-driver): https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/installation/
Я пытаюсь создать предоставленный пример кода (используя VS2015), который я скопирую и вставлю для удобства:
#include <iostream>
#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
int main(int, char**) {
mongocxx::instance inst{};
mongocxx::client conn{ mongocxx::uri{} };
bsoncxx::builder::stream::document document{};
auto collection = conn["testdb"]["testcollection"];
document << "hello" << "world";
collection.insert_one(document.view());
auto cursor = collection.find({});
for (auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
}
Я указал заголовок и библиотеку, включающую каталоги в соответствии с предоставленными настройками проекта. Я также добавил определения препроцессора MONGOCXX_STATIC и BSONCXX_STATIC.
Изначально я добавил следующие библиотеки в настройки компоновщика: libmongocxx.lib;libbsoncxx.lib;mongoc-static-1.0.lib;bson-1.0.lib;
Когда компиляция не удалась, я попытался использовать статическую библиотеку bson (не уверен, почему в документации предлагается использовать нестатическую?), Поэтому мои входные библиотеки теперь выглядят следующим образом: libmongocxx.lib;libbsoncxx.lib;mongoc-static-1.0.lib;bson-static-1.0.lib;
Несмотря на все мои усилия и безумный поиск в Google, я получаю около 2000 неразрешенных внешних элементов, пример которых я скопировал и вставил ниже:
libmongocxx.lib(distinct.obj) : error LNK2001: unresolved external symbol __imp_mongoc_read_prefs_new
Похоже, что это исходит от водителя Монго. я видел эта ТАКАЯ статья, но я уже связываю mongoc-static-1.0.lib, как указано выше — к сожалению, в этом посте больше нечего делать. Компилятор явно находит указанную библиотеку (в противном случае он будет жаловаться на «не найденные» ошибки), поэтому я могу только думать, что я каким-то образом неправильно построил библиотеку.
На этом этапе я также упомяну, что я успешно скомпилировал и запустил код с использованием нестатических библиотек и библиотек DLL. Однако крайне желательно избегать использования библиотек DLL, поэтому я хотел бы использовать статические библиотеки, если это возможно. ,
Я прочитал инструкцию по установке несколько раз, и что-то, что бросается в глаза, заключается в следующем:
Если вам нужны статические библиотеки, обязательно используйте параметр —enable-static configure при сборке libmongoc.
Тем не менее, это представляется целесообразным только для установки в Linux, я устанавливаю в Windows, используя CMake. Я запустил CMake.exe -LH, чтобы посмотреть, какие были доступные варианты в надежде найти что-нибудь о статических библиотеках, но без кубиков. Похоже, что нет никаких опций, необходимых для сборки статических библиотек, так как когда я установил mongo-c-driver, я успешно получил библиотеки bson-static-1.0.lib и mongoc-static-1.0.
Я в растерянности! Любая помощь будет принята с благодарностью, ура.
Вы решили проблемы? У меня похожие проблемы. Тем не менее, это нормально, если вы используете более старые драйверы, такие как mongoc 1.4, bson 1.4 и mongocxx 3.0, хотя они могут поддерживать только mongodb 3.2 и старше
Других решений пока нет …