この記事をフォローしました。そして今、私はこの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コード配列に、ログに記録する長さチェックがあり、それでも44512配列を送り返していますが、入力配列の長さの影響を受けません!! 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とC++で理解できないため、JNIコードが機能せず、理由もわかりません。
誰かが私のコードを書き直す方法を教えてください。
OK私の仕事は:
- Java配列をC++に配列を使用してのみ動作させ、Java配列に戻したい