C++ 使用「;sp";在Android NDK中

C++ 使用「;sp";在Android NDK中,c++,android-ndk,C++,Android Ndk,我正试图通过LD_PRELOAD拦截一些本机库调用 这对于C语言编写的简单库来说是很好的,但是现在我尝试进一步地,从C++编写的AOSP中重写一些更复杂的类方法。 下面是我的例子: #include <rs/cpp/util/RefBase.h> namespace android { sp<MediaCodec> MediaCodec::CreateByType(const sp<ALooper> &looper, const char *

我正试图通过LD_PRELOAD拦截一些本机库调用

这对于C语言编写的简单库来说是很好的,但是现在我尝试进一步地,从C++编写的AOSP中重写一些更复杂的类方法。 下面是我的例子:

#include <rs/cpp/util/RefBase.h>

namespace android {
    sp<MediaCodec> MediaCodec::CreateByType(const sp<ALooper> &looper, const char *mime, bool encoder) {
        // TODO this will be implemented by me
        return NULL;
    }    
}
在Android.mk中,这个:

LOCAL_STATIC_LIBRARIES += libstlport_static
遗憾的是,我得到的错误如下:

jni/libhook/ld_preload.cpp:88:1:错误:“sp”未命名类型

有人知道如何在这里使用sp吗?我认为它不是Android专用的,而是标准的C++——我在C++上完全是新的,刚刚开始“今天”:

我知道这可能是一种不好的做法,所以欢迎我提出任何其他想法。

sp
是Android特有的
sp
为强指针,
wp
为弱指针;它们是作为Binder IPC实施的一部分而产生的

开始寻找实现的地方是框架,对于C++新手来说,这是一个有点扭曲的地方。您正在处理的内容都不是NDK定义的公共API的一部分,这意味着它可能会在不同版本之间发生更改,因此请注意,您尝试执行的操作可能无法跨设备或软件更新

LOCAL_STATIC_LIBRARIES += libstlport_static