MongoDB初始化失败,DuplicateKey

时间:2015-08-01 09:03:39

标签: c++ mongodb

我想从我的C ++应用程序中使用MongoDB,我已经从Git下载了MongoDb二进制版本3.0.5和旧版C ++驱动程序版本1.0.5并安装了它们。

我使用以下代码跟踪instruction

#include <cstdio>
#include <mongo/bson/bson.h>
#include <mongo/client/dbclient.h>

int main(int argc, char *argv[])
{
  mongo::Status status = mongo::client::initialize();

 return 0;
}

编译并运行后,我得到以下消息:

Attempt to add global initialiser failed, status: DuplicateKey GlobalLogManager Abort

一些想法?

1 个答案:

答案 0 :(得分:1)

使用为C ++ 03(默认)编译的旧版驱动程序和使用C ++ 11 / C ++ 14编译的应用程序代码时,我可以重现相同的行为。它始终是段错误的,有时也会写相同的消息(取决于优化级别)。请参阅mongo website上的相关错误。

解决方案是:

  • 使用C ++ 03(-std=c++03
  • 编译代码
  • 使用C ++ 11支持重新编译驱动程序。

对于驱动程序中的C ++ 11支持,只需将--c++11=on传递给scons

scons --c++11=on install

使用GCC 4.9.1进行测试