如何使用JNI将double和unsigned int从本机c库返回到java

时间:2017-06-27 20:28:51

标签: java c++ c java-native-interface superpowered

我是使用JNI的新手,因此我尝试从C中的本机库中获取doubleunsigned int,并将值返回到我的java端但是我一直收到以下错误来自Android Studio

Error:(111, 37) error: called object type 'double' is not a function or function pointer
Error:(117, 43) error: called object type 'unsigned int' is not a function or function pointer
Error:(220, 19) error: functions that differ only in their return type cannot be overloaded

这是我的代码:

double SuperpoweredExample::getPosition() {

    double pos = playerA->positionMs();

    return pos;
}

unsigned int SuperpoweredExample::getDuration() {
    unsigned int dur = playerA->durationMs();
    return dur;
}

虽然这是Extern C结构

JNIEXPORT jdouble Java_com_superpowered_crossexample_MainActivity_getPosition(JNIEnv *javaEnvironment, jobject self) {

    return example->getPosition();
}
JNIEXPORT jint Java_com_superpowered_crossexample_MainActivity_getDuration(JNIEnv *javaEnvironment, jobject self) {
    return example->getDuration();
}

请大家,我会感激任何帮助...... 提前谢谢

1 个答案:

答案 0 :(得分:4)

您并没有完全困扰自己提供完整的课程定义,或回答您在评论中提出的问题,但似乎

playerA->positionMs

是数据成员,不是成员方法,类似于其他方法调用。所以你不能把它们称为方法。但是你可以直接将它们作为值返回。