我在使用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
有人知道为什么会这样吗?
感谢您的时间。
答案 0 :(得分:1)
这里确实没有足够的信息可以肯定地知道,我将做出一个疯狂的猜测,并说您正在混合调试和发布运行时,例如std::string
在mongocxx
库和您的应用程序的内部构造。
为每种要使用的CRT形式构建一次驱动程序,并根据其当前的构建配置选择正确的驱动程序,这一点非常重要。
https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=vs-2017