Я пытаюсь использовать короткий [] и jshortArray между C/JAVA следующим образом в Затмении:Неразрешенные символы NewShortArray и SetShortArrayRegion
JNIEXPORT void JNICALL Java_com_testingForFun_testFunc
(JNIEnv *env, jclass clazz, jshort num, jshortArray data) {
jshort outCArray[] = {100, 200};
jshortArray outJNIArray = (*env)->NewShortArray(env, 2); // allocate
if (NULL == outJNIArray) return;
(*env)->SetShortArrayRegion(env, outJNIArray, 0 , 2, outCArray); // copy
//return outJNIArray;
}
я создал файл заголовка, используя javah и включил его. Тем не менее, Eclipse говорит, что NewShortArray и SetShortArrayRegion не решены, и я не могу построить apk. Однако использование массивов (jshort и short) отлично работает. Я посмотрел в jni.h, и кажется, что другие связанные функции NewShortArray определены, если определена __cplusplus, но я использую C. Я также построил apk в командной строке, используя ndk-build и ant, и я прочитал outJNIArray [0] или [1] = 0 в вызывающей функции, поэтому он тоже не работает. Как решить эту проблему?
Кроме того, Eclipse не может решить ANDROID_LOG_DEBUG в:
__android_log_print(ANDROID_LOG_DEBUG, "FibLib.c", "fibNI(%lld)", n);
даже если
#include <android/log.h>
находится в самом начале файла.
Вам нужно добавить 'LOCAL_LDLIBS: = -llog -landroid' на ваш' Android.mk'. – jww
Основываясь на вашем редактировании, это звучит так, как будто ваш 'sysroot' неверен. Или ваши пути заголовка и lib неверны. Пожалуйста, покажите нам что-нибудь, например, ваш 'Android.mk' или вывод вызова компилятора. – jww