Je viens de suivre ce article. Et maintenant, j'ai ce code JNI:Android passer tableau 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);
}
}
Et pour vérifier si c'est ok; J'ai dans le tableau de code Java, la vérification de la longueur de se connecter et son 44 512 tableau encore en retour et n'est pas influencé par la longueur du tableau d'entrée !! Son toujours même, je pense avoir une erreur dans mon Application.mk
, parce que construire son OK
App.mk
:
APP_ABI := all
APP_STL := stlport_static
et andr.mk
sûr:
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 ma question est:
Mon code JNI ne fonctionne pas et je ne sais pas pourquoi, parce que je ne comprends pas dans JNI, et C++!
S'il vous plaît, quelqu'un me dire comment je peux réécrire mon code?
OK ma tâche est:
- Je voudrais obtenir tableau Java à C++ travail uniquement avec tableau et revenir à tableau Java
trop d'espace blanc et pas assez mise en forme le code. – njzk2
qu'est-ce que ReleaseIntArrayElements est supposé faire avec jfloat *? – njzk2
oh désolé mon erreur –