Mongocxx в Windows LNK2001: неразрешенный внешний символ __imp_mongoc_read_prefs_new

Я следовал инструкциям в следующем документе к письму (включая инструкции по сборке 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.

Я в растерянности! Любая помощь будет принята с благодарностью, ура.

1

Решение

Вы решили проблемы? У меня похожие проблемы. Тем не менее, это нормально, если вы используете более старые драйверы, такие как mongoc 1.4, bson 1.4 и mongocxx 3.0, хотя они могут поддерживать только mongodb 3.2 и старше

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]