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