gpt4 book ai didi

c++ - 智能指针不适用于 Android NDK r8

转载 作者:IT老高 更新时间:2023-10-28 23:00:43 27 4
gpt4 key购买 nike

我不知道如何在我的 Android 项目中使用共享指针。我在带有 Android NDK r8d 的 Mac OS X 上使用最新的 Eclipse ADT。

这是我的 Android.mk 中的内容文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CPPFLAGS := -std=c++11
LOCAL_MODULE := native
LOCAL_SRC_FILES := native.cpp
include $(BUILD_SHARED_LIBRARY)

这是我的 Application.mk 中的内容文件:

NDK_TOOLCHAIN_VERSION=4.7
APP_STL := stlport_shared

我已经尝试过默认的 GCC 4.6、实验性 4.7 和 clang3.1 工具链。
我试过链接到 stlport_sharedgnustl_shared c++ 运行时库。
我试过 FLAGS -std=c++11 , -std=c++0x ,以及 -std=gnu++11 .

我能够使用 c++11 标准的 lambdas 和 auto,因此 C++11 标志似乎正在工作。但是,每当我尝试使用 shared_ptr、weak_ptr 或 unique_ptr 时,我都会收到错误 'suchandsuch_ptr' is not a member of 'std'

我有 #include <memory>在我的 cpp 文件中。现在 Eclipse 告诉我 Unresolved inclusion: <memory> ,但我对 <vector> 得到了同样的结果和 <string>并且那些似乎编译和工作都很好。

Android NDK 包含的工具链中是否没有实现智能指针?
如果不是,为什么不呢?由于 GCC 和 clang 已经支持智能指针很长一段时间了,这意味着我要么遗漏了一些东西,要么 Android 开发人员出于某种原因禁用了它们。
有什么线索吗?

最佳答案

确保标准库包含路径(如 /android-ndk-r8d/sources/cxx-STL/gnu-libstdc++/4.7/include)在目标设置中。

要让 IDE 识别 GNU 标准库中的 C++11 类,请将 __GXX_EXPERIMENTAL_CXX0X__ 作为预定义宏添加到索引器。 (这个名字有点不合时宜,因为 C++11 是标准化的,并且支持不再是实验性的,但到目前为止还是这么称呼的。)另外,请确保索引器设置为反射(reflect)正确的构建目标。

关于c++ - 智能指针不适用于 Android NDK r8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14532057/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com