UnsatisfiedLinkError: native method not found - Android

I am developing an Android application using C ++ code. Trying to use JNI but failed. Code in myFirstApp.cpp

JNIEXPORT jint JNICALL Java_com_example_myfirstapp_CreateApp_findMarkersNative( JNIEnv* env, jobject, jlong addrRgba) { //clock_t begin = clock(); Mat& mRgb = *(Mat*) addrRgba; Mat mgray(mRgb.rows, mRgb.cols, CV_8UC1); cvtColor(mRgb, mgray, CV_RGBA2GRAY, 1); // the working one clearVectors(); findSquares(mgray); mergeRectangles(); processFilteredSquares(mgray); drawFilteredSquaresWithoutMarker(mRgb); __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "Candidates %i",candidates.size()); return clusterBoundaries.size(); // clock_t end = clock(); // mgray.release(); } 

In android activity (CreateApp) I declared a method

 public native int findMarkersNative(long imgAdd); 

Package name in action

 package com.example.myfirstapp; 

Error displaying logcat

 Caused by: java.lang.UnsatisfiedLinkError: Native method not found com.example.myfirstapp.CreateApp.findMarkersNative 
+4
source share
1 answer

Your definitions seem correct. According to several similar posts, this could be due to the C / C ++ name mangling . Try to surround your methods where this API is defined with

extern "C" {}

eg:

 extern "C" { JNIEXPORT jint JNICALL Java_com_example_myfirstapp_CreateApp_findMarkersNative(JNIEnv* env, jobject, jlong addrRgba) { ... function code ... } } 

Source: Unsuccessful communication error

+1
source

Source: https://habr.com/ru/post/1479454/


All Articles