Место чтения нарушения доступа при использовании драйвера mongocxx - PullRequest
1 голос
/ 07 марта 2019

У меня возникли проблемы с драйвером mongodb c ++.

У меня есть следующий код, и он работал нормально:

//bsoncxx::document::value doc-->It was defined properly before

static mongocxx::instance inst{};

mongocxx::client conn{ mongocxx::uri{} };

auto db = conn["Test"];

auto res = db["Executions"].insert_one(std::move(doc));

Но когда я изменился на:

static mongocxx::instance inst{};

mongocxx::client conn{ mongocxx::uri{} };

auto db = conn[dbName];

auto res = db[colName].insert_one(std::move(doc));

(dbName и colName являются строковыми параметрами функции)

Когда код достигает строки:

auto db = conn[dbName];

Я получаю следующее исключение:

Access violation reading location 0x0000726F74636570

Я использую Windows 7 x64 и Visual Studio 2017

Кто-нибудь знает, почему это происходит?

Спасибо за ваше время.

1 Ответ

1 голос
/ 08 марта 2019

Здесь не достаточно информации, чтобы знать наверняка, я собираюсь сделать дикое предположение и сказать, что вы смешиваете время выполнения отладки и выпуска, так что std::string имеет разную компоновку между внутренними компонентамискомпилированная библиотека mongocxx и ваше приложение.

Очень важно, чтобы вы построили драйвер один раз для каждой формы CRT, которую вы хотите использовать, и чтобы ваше приложение выбирало правильную на основев текущей конфигурации сборки.

https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=vs-2017

...