지금은 오류가 점점 오전 :UnsatisfiedLinkError를 네이티브 메소드를 찾을 수 없습니다
unsatisfiedLinkerror native method not found.2-04 07:16:34.002: E/AndroidRuntime(1962): java.lang.UnsatisfiedLinkError: Native method not found: com.example.hellocplusplus.MainActivity.camera:()I.
PLS 나를 도울를
내 C++ 코드 :
#include <opencv/cv.h>
#include <jni.h>
#include <opencv/highgui.h>
using namespace cv;
/************************************************************************************************************
**
***********************************************************************************************************/
extern "C"{
JNIEXPORT jint JNICALL Java_com_example_hellocplusplus_MainActivity_camera
(JNIEnv *, jobject);
JNIEXPORT jint JNICALL Java_com_example_hellocplusplus_MainActivity_camera
(JNIEnv *, jobject)
{
VideoCapture cap(0); // open the video camera no. 0
if (!cap.isOpened()) // if not success, exit program
{
//cout << "Cannot open the video cam" << endl;
return -1;
}
namedWindow("MyVideo", CV_WINDOW_AUTOSIZE); //create a windowcalled "MyVideo"
//Show continous video on the output window
while (1)
{
Mat frame;
bool bSuccess = cap.read(frame); // read a new frame from video
if (!bSuccess) //if not success, break loop
{
//cout << "Cannot read a frame from video stream" << endl;
break;
}
imshow("MyVideo", frame); //show the frame in "MyVideo" window
if (waitKey(30) == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed, break loop
{
//cout << "esc key is pressed by user" << endl;
break;
}
}
return (jint) 0;
}
}
내 자바 코드 :
package com.example.hellocplusplus;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
public static String TAG="OpenCVImageProcessing";
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
System.loadLibrary("nativegray");
Log.i(TAG, "OpenCV loaded successfully");
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
public native int camera();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
camera();
//i=camera();
//System.out.println(i);
// camera1();
}
public void onResume()
{
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
.so 파일이'libs' 폴더에 있습니까? "libs"프로젝트 폴더에있는 안드로이드 응용 프로그램 라이브러리는/data/data/[package_name]/lib 폴더에 기록됩니다. 런타임 중에 필요한 경우이 위치에서로드됩니다. http://developer.android.com/training/articles/perf-jni.html#faq_ULE – Gattsu
예 .so 파일이 libs 폴더에 있는지 확인하십시오. 하지만 그 안드로이드 응용 프로그램/데이터/데이터/[packge_name]/lib 폴더에 있지 않습니다. 나는 그것을 opencv manager.thanks에서 사전에 걸릴 것 같아요 – Mirza