获取错误:名称空间“std”中的“shared_ptr”未命名类型

时间:2015-03-07 12:08:14

标签: android c++11 android-studio stlport

我正在尝试在android studio(ndk r10d)中编译一个使用一些C ++代码的android应用程序。我需要C ++ 11所以我添加了-std=gnu++11(我需要gnu++11而不是c++11才能使用我正在使用的扩展程序。我正在使用stlport stl,因为我正在使用的其他库使用这个stl库。 所以我在build.gradle文件中的cFlags和stl参数如下所示:

stl "stlport_static"
cFlags " mylib1.a mylib2.a ... -fexceptions -frtti -std=gnu++11"

我还包含了记忆:#include <memory>

尝试编译时收到此错误:

'shared_ptr' in namespace 'std' does not name a type

到目前为止,我一直在使用智能指针的boost实现,但随着转向c ++ 11,我宁愿使用标准实现。

3 个答案:

答案 0 :(得分:16)

http://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared 在代码中使用头文件。

#include <iostream>
#include <memory>

答案 1 :(得分:1)

@ T.C看起来你是对的。我在寻找解决问题的方法时看到了你对另一个问题的主张,但是我正在使用的库正在使用C ++ 11和STLport进行编译,我认为这种说法可能不正确。

我认为发生的事情是我使用的库没有使用STLport缺少的任何C ++ 11功能。它们仅使用gcc编译器支持的C ++ 11功能。我需要gnuStl来支持我正在使用的功能。

我的解决方案是对智能指针和所有其他缺少的C ++ 11功能使用boost实现。

答案 2 :(得分:1)

我在这里搜寻类似的错误,但答案不起作用:

error: ‘shared_pointer’ in namespace ‘std’ does not name a template type

就我而言,这是一个错字:

std::shared_pointer

应该是

std::shared_ptr