Android NDK不会对变化做出反应

Android NDK不会对变化做出反应,android,opencv,android-ndk,java-native-interface,unsatisfiedlinkerror,Android,Opencv,Android Ndk,Java Native Interface,Unsatisfiedlinkerror,我正在实现Android摄像头应用程序,我正在JNI中处理预览帧。我有一个processImage.cpp文件,我在其中执行所有本机处理,直到现在,当我发现如果我对本机文件进行任何更改,它不会改变应用程序的行为时,它才起作用 也许它可以连接到我最近添加的OpenCV库的静态链接,并在那里加载本机库 package fit.vutbr.faceswap; // OpenCV static initialization static { if (!OpenCVLoader.

我正在实现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)
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_MODULES := processImage
应用程序.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)
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(中心x,中心y)
I get
未满足链接错误:未找到本机方法


有人知道问题出在哪里吗?

尝试将本机方法修改为:

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;
    }

可能是现金问题。从项目目录中删除apk,并从设备中卸载应用程序。仍然获得:“W/dalvikvm(6553):未找到本机Lfit/vutbr/faceswap/CameraPreview;的实现。kalmanFilterNative:(II)[I”我遇到过C++编译失败的情况,但我没有注意到。我手动运行<代码> NDK Bug < /Cord>,结果出错了。在修改后,构建完成了。但是,在运行<代码> NDK Bug 之后,我失去了OpenCVJava.A.从LIBS目录(我使用静态init,如上面所提到的)。是否可以立即构建它们?好的,问题已解决:)我刚刚根据此编辑了Android.mk。您能否回答我的问题,我会将其标记为已接受?谢谢,但我忘了包含
extern“C”{JNIEXPORT…JNICALL}
在我最初的问题中,但我的代码中有:)无论如何,正如您在评论中看到的,我已经解决了这个问题。