我只是跟着这篇文章。现在,我有了这个 JNI 代码:
extern "C"{
JNIEXPORT jfloatArray JNICALL Java_com_jp_algi_Corelib_vector
(JNIEnv *env, jobject clazz, jfloatArray input){
jfloat* flt1;
flt1 = (*env)->GetFloatArrayElements(env, input, NULL);
if (flt1 == NULL){
return NULL; /* exception occurred */
}
// do stuff to the array
(*env)->ReleaseFloatArrayElements(env, input, flt1, 0);
return flt1;
//delete flt1, v;
//env->SetFloatArrayRegion(result, 0, 1, v);
}
}
并检查它是否正常;我在 Java 代码数组中有长度检查以记录,它仍然发回 44 512 数组,并且不受输入数组长度的影响!它仍然一样,我认为我的 中有一些错误Application.mk
,因为构建它的 OK
App.mk
:
APP_ABI := all
APP_STL := stlport_static
并且andr.mk
可以肯定:
LOCAL_PATH := $(TOP_LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := com_jp_algi_Corelib
LOCAL_SRC_FILES := com_jp_algi_Corelib.cpp, kiss_fft.c, kiss_fftr.c
include $(BUILD_SHARED_LIBRARY)
好的,我的问题是:
我的 JNI 代码不起作用,我不知道为什么,因为我不懂 JNI 和 C++!
请有人告诉我如何重写我的代码?
好的,我的任务是:
- 我想让 Java 数组到 C++ 只使用数组并返回到 Java 数组