我在使用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

有人知道为什么会这样吗?

谢谢你的时间。

最佳答案

这里确实没有足够的信息可以肯定地知道,我将做出一个疯狂的猜测,并说您正在混合调试和发行版运行时,因此std::string在已编译的mongocxx库的内部和外部之间的布局不同。你的申请。

为您希望使用的每种形式的CRT构建一次驱动程序,并且应用程序根据其当前的构建配置选择正确的驱动程序,这一点非常重要。

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

09-08 08:53