我正在使用C代码开发一个Android应用程序.试图使用JNI但失败了.
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();}
在androID活动(CreateApp)中,我已经声明了该方法
public native int findMarkersNative(long imgAdd);
活动中的包名称是
package com.example.myfirstapp;
出现logcat的错误
Caused by: java.lang.UnsatisfIEdlinkError: Native method not found com.example.myfirstapp.CreateApp.findMarkersNative
解决方法:
你的定义似乎正确.根据几个类似的帖子,可能是因为C/C++ name mangling.
尝试围绕您的方法,围绕定义此API的位置
extern “C” { }
例如:
extern "C" {JNIEXPORT jint JNICALL Java_com_example_myfirstapp_CreateApp_findMarkersNative(jnienv* env, jobject, jlong addrRgba) {... function code ...}}
资料来源:Unsatisfied link error
总结以上是内存溢出为你收集整理的UnsatisfiedLinkError:找不到本机方法 – Android全部内容,希望文章能够帮你解决UnsatisfiedLinkError:找不到本机方法 – Android所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)