Android:从不兼容的指针类型初始化 JNI 函数指针

标签 android c pointers

我有这个代码:

FLAC__StreamDecoderWriteStatus writeCallback(const FLAC__StreamEncoder *encoder, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, void *client_data) {
   //impl....
}

然后我有这样的声明:

{    
/// stuff
FLAC__StreamDecoderWriteStatus (*writeCallbackPtr) (const FLAC__StreamEncoder *, const FLAC__byte  , size_t , unsigned , unsigned , void *) = writeCallback;
// more stuff
}   

我对错误的理解是两者是不同的类型,但我不明白在这种情况下我做错了什么。

最佳答案

你的声明是错误的,应该是

FLAC__StreamDecoderWriteStatus (*writeCallbackPtr) (
    const FLAC__StreamEncoder *, 
    const FLAC__byte[], 
    /*         here ^ you missed the [] */         
    size_t , 
    unsigned , 
    unsigned , 
    void *) = writeCallback;

关于Android:从不兼容的指针类型初始化 JNI 函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726321/

相关文章:

java - 为什么 "selectedCountry"、 "selectedAge"、 "selectedGender"返回 null ?

Android 重新启动我的 Activity

android - Pusher VS Client 每秒向服务器请求更改

c - 如何使用执行增量 read() 的 C 程序来确定文件系统使用的 block 大小?

c++ - 什么是指针旋转?

c++ - 传递给函数的数组参数不是常量指针吗?

android - ListView 条目中的背景图像自发消失

c - 冗余或良好实践 - 结构

c - “Control may reach end of non-void function”错误消息

objective-c - 从 C 程序员的角度来看,在 Objective C 中保留对象