0

我有这两段代码,第一段是:

JNIEXPORT jlongArray* JNICALL Java_com_home_overlay_activity_MainActivity_ProcessPointer(JNIEnv* env, jobject) {

    jlongArray blobs_arr;

    return &blobs_arr;
}

第二个是:

JNIEXPORT jlongArray JNICALL Java_com_home_overlay_activity_MainActivity_Process(JNIEnv* env, jobject) {

    jlongArray blobs_arr;

    return blobs_arr;
}

我想要的只是将长数组返回给java代码。

第一个运行正常,而第二个不运行,以这种方式返回长数组有什么问题吗?

4

2 回答 2

1

Java 中没有指针,所以我认为如果第一段代码确实有效,它根本不会产生你想要的东西。它可能返回 C jlong​​Array 的内存地址。

至于第二段代码,我看不出它有什么问题,只是它返回了一个未初始化的对象,可能是 NULL,也可能是一些随机内存垃圾,这可能会导致 Java 端出现意外行为。也许您应该尝试在 C 部分将其初始化为 NULL,或者尝试通过实际归档数组来使您的代码片段更真实,以便您可以在真实条件下测试代码行为。

于 2013-01-02T10:52:00.233 回答
0

我的应用程序没有读取 jni.h 但正在工作..这很奇怪,在我设置 NDKROOT 变量后它一切正常

于 2013-01-02T13:55:01.337 回答