在JNI和Android NDK中使用jlongArray

在JNI和Android NDK中使用jlongArray,android,android-ndk,java-native-interface,native,Android,Android Ndk,Java Native Interface,Native,我有两段代码,第一段是: 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_

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

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代码


第一个运行正常,而第二个运行不正常,以这种方式返回长数组是否有任何问题???

Java中没有指针,因此我认为如果第一段代码实际工作,它将根本不会产生您想要的结果。它可能返回C jlong数组的内存地址


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

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

我的问题不是编码,而是编译,这段代码根本没有编译,反正我的应用程序没有读取jni.h,而是在工作。。这很奇怪,在我设置了NDKROOT变量之后,它都正常工作了。。但其他问题突然出现,我可以在另一个帖子中发布。。。谢谢你哪一个是由javah生成的?我不明白。问题解决了,我在第一个答案的评论中写下了解决方案如果问题解决了,请写下解决方案作为答案并接受它。如果问题与问题无关,请关闭它。另外,第一个代码段非常非常错误-它不仅不会将数据返回到Java,而且在C级别也是错误的,因为它返回堆栈变量的地址。噢,谢谢,实际上它只是编译错误的示例,是的,它与问题无关,将被关闭:)