C++ 使用「;sp";在Android NDK中
我正试图通过LD_PRELOAD拦截一些本机库调用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 *
这对于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