【发布时间】:2015-05-08 23:57:14
【问题描述】:
我正在尝试在使用一些 C++ 代码的 android studio (ndk r10d) 中编译一个 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,我宁愿使用标准实现。
【问题讨论】:
-
导致错误的实际代码是什么?
-
原始错误出现在我添加以缩短代码的定义上,但在我尝试使用此宏的所有文件中都可以看到错误:#define myapp_shared_ptr std::shared_ptr
-
shared_ptr 没有命名类型。它命名了一个类型模板。你确定你在使用它时正在做 shared_ptr
吗?当我离开时,我得到的错误是“使用类模板需要模板参数” -
我认为 STLport 没有 C++11 特性。
标签: android c++11 android-studio stlport