Android NDK не реагирует на изменения

Я реализую приложение камеры Android, где я обрабатываю кадры предварительного просмотра в JNI. У меня есть файл processImage.cpp, в котором я выполняю всю нативную обработку, и он работал до сих пор, пока не обнаружил, что, если я делаю какие-либо изменения в нативном файле, это не меняет поведение приложения.

Возможно, это может быть связано со статической связью библиотеки OpenCV, которую я недавно добавил и куда я загружаю нативную библиотеку.

package fit.vutbr.faceswap;

// OpenCV static initialization
    static {
        if (!OpenCVLoader.initDebug()) {
            // Handle initialization error
            Log.d(TAG, "OpenCV init error");
        }
        else {
            System.loadLibrary("processImage");
            //System.loadLibrary("detection_based_tracker");
        }
    }

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# OpenCV
OPENCV_LIB_TYPE:=STATIC
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
include C:\Users\Acer\Projects\OpenCV\OpenCV-2.4.6-android-sdk\sdk\native\jni\OpenCV.mk

LOCAL_C_INCLUDE:= C:\Users\Acer\Projects\OpenCV\OpenCV-2.4.6-android-sdk\sdk\native\jni\include
LOCAL_LDLIBS += -llog -ldl
LOCAL_MODULE    := processImage  
LOCAL_SRC_FILES := processImage.cpp 



include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_MODULES := processImage

Объявление нативного метода:

private native int[] kalmanFilterNative(int center_x, int center_y);

Определение в processImage.cpp:

jintArray Java_fit_vutbr_faceswap_CameraPreview_kalmanFilterNative( JNIEnv* env, jobject thiz, jint center_x, jint center_y) 
{                   
  // code
  return ret;
}

И по вызову ret = kalmanFilterNative(center_x, center_y); я получил UnsatisfiedLinkError: Native method not found,

Кто-нибудь знает, где проблема?

1 ответ

Попробуйте изменить свой родной метод для:

extern "C" {
    JNIEXPORT jintArray JNICALL Java_fit_vutbr_faceswap_CameraPreview_kalmanFilterNative( JNIEnv* env, jobject thiz, jint center_x, jint center_y);
};
    JNIEXPORT jintArray JNICALL Java_fit_vutbr_faceswap_CameraPreview_kalmanFilterNative( JNIEnv* env, jobject thiz, jint center_x, jint center_y) 
    {                   
      // code
      return ret;
    }
Другие вопросы по тегам