java.lang.UnsatisfiedLinkError:在运行时调用该本机方法时未找到本机方法

java.lang.UnsatisfiedLinkError:在运行时调用该本机方法时未找到本机方法,java,android,c++,eclipse,opencv,Java,Android,C++,Eclipse,Opencv,我是android编程新手,所以我尝试编写一个简单的程序,可以从java调用jni文件夹本机cpp文件方法。。虽然我尝试运行OPENCV示例,并尝试以相同的方式调用,但m都没有成功,甚至OPENCV教程2-混合处理也没有成功。它在我的模拟器中启动并崩溃 com_rukna_myfirstandroidimageapp_main activity.h CPPCALL.cpp 但当我从main活动调用这个方法时,如下所示 我在运行应用程序时遇到以下错误: Android.mk Application

我是android编程新手,所以我尝试编写一个简单的程序,可以从java调用jni文件夹本机cpp文件方法。。虽然我尝试运行OPENCV示例,并尝试以相同的方式调用,但m都没有成功,甚至OPENCV教程2-混合处理也没有成功。它在我的模拟器中启动并崩溃

com_rukna_myfirstandroidimageapp_main activity.h

CPPCALL.cpp

但当我从main活动调用这个方法时,如下所示

我在运行应用程序时遇到以下错误:

Android.mk

Application.mk

当我签入myproject.apk时,我在MyFirstAndroidImageApp.apk\lib\x86下找到了

项目属性->C/C++常规->路径和符号->包含->GNU C++


请帮助我,就像我在没有任何参数的情况下调用相同的方法,然后它正常运行一样,我不明白为什么。。。。。如果是的话,我是否需要给出一个构造函数类型的东西,然后在哪里以及如何提供?

您是否尝试在Application.mk中修改APP_ABI:=armeabi-v7a。此外,如果cpp编译成功,您应该在libs/armeabi-v7a中找到so文件

我首先尝试了使用Mat file作为参数调用相同的方法,然后我尝试使其简单化,并尝试了long、int等。。但错误是一样的。没有争论就没有错误。。
extern "C"{
 * Class:     com_rukna_myfirstandroidimageapp_MainActivity
 * Method:    getStringfromNative
 * Signature: (I)Ljava/lang/String;

JNIEXPORT jstring JNICALL Java_com_rukna_myfirstandroidimageapp_MainActivity_getStringfromNative
  (JNIEnv *, jobject, jint);
}
#include <com_rukna_myfirstandroidimageapp_MainActivity.h>     
#include <opencv2/core/core.hpp>         
#include <opencv2/imgproc/imgproc.hpp>
JNIEXPORT jstring JNICALL Java_com_rukna_myfirstandroidimageapp_MainActivity_getStringfromNative (JNIEnv *env , jobject obj, jint src)     
{
        return (env)->NewStringUTF("HELLO from JNI CPPCALL !!");     
}
public native java.lang.String getStringfromNative(int);    
  descriptor: (I)Ljava/lang/String;
package com.rukna.myfirstandroidimageapp;    
import library    
public class MainActivity extends Activity {   
/* some declarations and other functions */   
int a = 0;int b = 1;      
String s = getStringfromNative( a); /*---> error when call for the cpp method*/   
_field.setText(s);  
_field.setSelection(_field.getText().toString().length());  


public native String getStringfromNative(int a);

    static {
        if (!OpenCVLoader.initDebug()) {
            // Handle initialization error
        }
        else{
        System.loadLibrary("MyLib");}
    }
}
java.lang.UnsatisfiedLinkError: Native method not found: com.rukna.myfirstandroidimageapp.MainActivity.getStringfromNative:(I)Ljava/lang/String;
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#OPENCV_CAMERA_MODULES:=off
#OPENCV_INSTALL_MODULES:=on
#OPENCV_LIB_TYPE:=SHARED
#OPENCV_LIB_TYPE:=STATIC
# OpenCV
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
include D:/OpenCV-2.4.11-android-sdk/sdk/native/jni/OpenCV.mk


#LOCAL_MODULE    := CLAHE_test
LOCAL_MODULE    := MyLib
LOCAL_SRC_FILES := CPPCALL.cpp
#LOCAL_SRC_FILES := CLAHE_test.cpp
#LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_LDLIBS +=  -llog

include $(BUILD_SHARED_LIBRARY)
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := x86
APP_PLATFORM := android-19
libhydrogen.so
libimageutils.so
liblept.so
libMyLib.so
libnative_camera_r2.3.3.so
libnative_camera_r3.0.1.so
libnative_camera_r4.0.3.so
libnative_camera_r4.1.1.so
libnative_camera_r4.2.0.so
libnative_camera_r4.3.0.so
libnative_camera_r4.4.0.so
libopticalflow.so
libtess.so
${NDKROOT}/platforms/android-9/arch-arm/usr/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
${NDKROOT}/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.8/include
D:/OpenCV-2.4.11-android-sdk/sdk/native/jni/include
D:\android-ndk-r10d\platforms\android-19\arch-x86\usr\include