xCode MongoDB执行不良访问

时间:2015-06-05 09:00:22

标签: c++ xcode mongodb

我对MongoDB和Boost库的配置有另一个问题。

现在看起来一切都很好但是当我尝试运行我的简单项目时:

#include <iostream>

#include <mongo/client/dbclient.h>

int main(int argc, const char * argv[])
{
    //try Mongo
    mongo::client::initialize();
    try {
        mongo::DBClientConnection c;
        c.connect("localhost");

        std::cout << "connected ok" << std::endl;
    } catch( const mongo::DBException &e ) {
        std::cout << "caught " << e.what() << std::endl;
    }

    return EXIT_SUCCESS;
}

我在c.connect行上获得了Exec Bad Access。

这是屏幕截图Screenshot

编辑: 我用这个命令运行mongodb scons:

scons --prefix=$HOME/mongo-client-install --extrapath=/Users/Wildregar/boost/ --osx-version-min=10.9 install

和c ++标准库中的xCode我有

libc++

2 个答案:

答案 0 :(得分:0)

首先,如果您将示例发布为完全可编译的示例,则会更好。但是,当我添加必要的include并将其包装在main()函数中时,您的示例代码对我来说是针对新构建的传统驱动程序。

通常,这类崩溃是应用程序,boost库或libmongoclient中语言标准级别(例如C ++ 11与C ++ 03)不匹配或C ++运行时库不匹配的结果其中一些相同的组件与libstdc ++链接,其他组件与libc ++链接。

作为一般规则,所有组件(app,boost库和驱动程序)必须与语言标准级别和C ++运行时库保持一致。

答案 1 :(得分:0)

解决。正如@acm所指出的那样,问题与语言方言有关。 虽然official documentation建议使用

进行编译
scons --prefix=$HOME/mongo-client-install --osx-version-min=10.9 install

这是一个坏主意,因为默认使用C ++ 03方言。

改为使用

scons --prefix=$HOME/mongo-client-install --c++11="on" --osx-version-min=10.9 install

这应该可以解决问题。