的UnsatisfiedLinkError:本机方法未找到 - Android电子 [英] UnsatisfiedLinkError: Native method not found - Android
问题描述
我正在开发使用C ++ code Android应用程序。尝试使用JNI,但失败了。
在code在myFirstApp.cpp
JNIEXPORT jint JNICALL Java_com_example_myfirstapp_CreateApp_findMarkersNative(
JNIEnv的* ENV,jobject,jlong addrRgba){
// clock_t表示开始=时钟();
垫&安培; mRgb = *(*垫)addrRgba;
垫mgray(mRgb.rows,mRgb.cols,CV_8UC1);
cvtColor(mRgb,mgray,CV_RGBA2GRAY,1); //工作1 clearVectors(); findSquares(mgray);
mergeRectangles(); processFilteredSquares(mgray); drawFilteredSquaresWithoutMarker(mRgb);
__android_log_print(ANDROID_LOG_VERBOSE,APPNAME考生%I,candidates.size());
返回clusterBoundaries.size();
// clock_t表示结束=时钟();// mgray.release();
}
在Android活动(CreateApp),我已经声明的方法
公共本土INT findMarkersNative(长imgAdd);
在活动包名称是
包com.example.myfirstapp;
出现在logcat的误差
产生的原因:java.lang.UnsatisfiedLinkError中:本机方法未找到com.example.myfirstapp.CreateApp.findMarkersNative
您似乎定义正确的。据几个类似的帖子,这可能是因为C / C ++ 名称重整。
尝试围绕你的方法,其中,围绕这个API与定义
为externC{}
块引用>例如:
的externC{
JNIEXPORT jint JNICALL Java_com_example_myfirstapp_CreateApp_findMarkersNative(JNIEnv的* ENV,jobject,jlong addrRgba)
{
...功能code ...
}
}来源:<一个href=\"http://stackoverflow.com/questions/6350329/unsatisfiedlinkerror-in-android-eclipse\">Unsatisfied链接错误
I am developing an android app using C++ code. Trying to use JNI but failed. The 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 the android activity(CreateApp), I've declared the method
public native int findMarkersNative(long imgAdd);
The package name in the activity is
package com.example.myfirstapp;
The error appearing the logcat
Caused by: java.lang.UnsatisfiedLinkError: Native method not found com.example.myfirstapp.CreateApp.findMarkersNative
解决方案Your definitions seem correct. According to several similar posts, it may be because of C / C++ name mangling. Try surrounding your methods, around where this API is defined with
extern "C" { }
for example:
extern "C" { JNIEXPORT jint JNICALL Java_com_example_myfirstapp_CreateApp_findMarkersNative(JNIEnv* env, jobject, jlong addrRgba) { ... function code ... } }
Source: Unsatisfied link error
这篇关于的UnsatisfiedLinkError:本机方法未找到 - Android电子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!