我只是遵循這article。現在,我有這個JNI代碼:Android NDK傳遞數組到c
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)
OK,我的問題是:
我的JNI代碼不工作,我不知道爲什麼,因爲我不明白在JNI和C++!
請有人告訴我如何重寫我的代碼?
確定我的任務是:
- 我想獲得Java數組到C++的工作只與陣列,並返回到Java數組
太多的空白,並沒有足夠的格式在代碼。 – njzk2
ReleaseIntArrayElements應該如何處理jfloat *? – njzk2
哦對不起,我的錯誤 –