tutorial studio r17b r16 r13 ndk android jni native android-ndk

studio - javah jni header generado tiene error de sintaxis-Android NDK-eclipse



ndk r13 (1)

Android NDK, usé el siguiente comando para generar el encabezado jni,

C:/eclipse_workspace/C_Google_FaceDetect/bin>javah -jni -verbose -classpath C:/Android_SDK/platforms/android-10;C:/eclipse_workspace/C_Google_FaceDetect/src;. -d C:/eclipse_workspace/C_Google_FaceDetect/jni c.google.facedetect.FaceDetect

El problema es que aunque configuré todo bien, recibo el siguiente error

No se encontró ninguna implementación para Lc / google / facedetect / FaceDetect nativo; .decodeYUV ([I [BII) V

threadid = 1: el hilo sale con excepción no detectada (group = 0x40018578)

EXCEPCIÓN FATAL: main java.lang.UnsatisfiedLinkError: decodeYUV

Intenté buscar lo que estaba mal, y encontré que en el archivo de encabezado c_google_facedetect_FaceDetect.h jni, en realidad tengo un error de sintaxis (aunque se haya generado)

/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class c_google_facedetect_FaceDetect */ #ifndef _Included_c_google_facedetect_FaceDetect #define _Included_c_google_facedetect_FaceDetect #ifdef __cplusplus extern "C" { #endif #undef c_google_facedetect_FaceDetect_CAMERA_WIDTH #define c_google_facedetect_FaceDetect_CAMERA_WIDTH 480L #undef c_google_facedetect_FaceDetect_CAMERA_HEIGHT #define c_google_facedetect_FaceDetect_CAMERA_HEIGHT 320L /* * Class: c_google_facedetect_FaceDetect * Method: decodeYUV * Signature: ([I[BII)V */ JNIEXPORT void JNICALL Java_c_google_facedetect_FaceDetect_decodeYUV(JNIEnv *, jobject, jintArray, jbyteArray, jint, jint); #ifdef __cplusplus } #endif #endif

La línea "JNIEXPORT void JNICALL ...." tiene un error de sintaxis, ¿quizás eso es lo que causa todos los errores?

Mi archivo Android.mk es el siguiente:

LOCAL_PATH: = $ (llamar a my-dir)

incluye $ (CLEAR_VARS)

LOCAL_MODULE: = detección facial

LOCAL_SRC_FILES: = face-detect.c

incluye $ (BUILD_SHARED_LIBRARY)

ACTUALIZAR Mi único archivo java se llama FaceDetect.java e incluye el siguiente código

public class FaceDetect extends Activity implements SurfaceHolder.Callback, Camera.PreviewCallback { static { Log.d("mytag", "before_lib"); System.loadLibrary("face-detect"); Log.d("mytag", "after_lib"); } public static native void decodeYUV(int[] out, byte[] fg, int width, int height); }

Además, Eclipse no dice cuál es el error de sintaxis, solo subraya la línea JNIExport y dice que el error de sintaxis

Otra ACTUALIZACIÓN para responder a la pregunta , sí he comprobado que la biblioteca se está cargando, aquí está el logcat

07-16 13: 31: 43.257: D / mytag (25188): before_lib
07-16 13: 31: 43.281: D / dalvikvm (25188): intentando cargar lib /data/data/c.google.facedetect/lib/libface-detect.so 0x40517808
07-16 13: 31: 43.281: D / dalvikvm (25188): se agregó lib compartida /data/data/c.google.facedetect/lib/libface-detect.so 0x40517808
07-16 13: 31: 43.281: D / dalvikvm (25188): No se encontró JNI_OnLoad en /data/data/c.google.facedetect/lib/libface-detect.so 0x40517808, omitiendo init
07-16 13: 31: 43.281: D / mytag (25188): after_lib


No hay error de sintaxis Compruebe que está cargando su biblioteca nativa y que se ha cargado satisfactoriamente.