android — Opencv Не найдено ни одной реализации для родного / родного метода

LogCat / com.example.jni

01-10 01:58:55.102: D/JavaCameraView(22833): Starting processing thread
01-10 01:58:55.112: E/BufferQueue(22833): [unnamed-22833-1] dequeueBuffer: mMinUndequeuedBuffers=2 exceeded (dequeued=6)
01-10 01:58:55.142: D/JavaCameraView(22833): Preview Frame received. Frame size: 373248
01-10 01:58:55.142: E/BufferQueue(22833): [unnamed-22833-1] dequeueBuffer: mMinUndequeuedBuffers=2 exceeded (dequeued=5)
01-10 01:58:55.162: W/dalvikvm(22833): No implementation found for native Lcom/example/jni/TutorialActivity;.MainActivity:(JJI)V
01-10 01:58:55.162: W/dalvikvm(22833): threadid=11: thread exiting with uncaught exception (group=0x40bd3438)
01-10 01:58:55.172: E/AndroidRuntime(22833): FATAL EXCEPTION: Thread-2008
01-10 01:58:55.172: E/AndroidRuntime(22833): java.lang.UnsatisfiedLinkError: Native method not found: com.example.jni.TutorialActivity.MainActivity:(JJI)V
01-10 01:58:55.172: E/AndroidRuntime(22833):    at com.example.jni.TutorialActivity.MainActivity(Native Method)
01-10 01:58:55.172: E/AndroidRuntime(22833):    at com.example.jni.TutorialActivity.onCameraFrame(TutorialActivity.java:133)
01-10 01:58:55.172: E/AndroidRuntime(22833):    at org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:387)
01-10 01:58:55.172: E/AndroidRuntime(22833):    at org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:328)
01-10 01:58:55.172: E/AndroidRuntime(22833):    at java.lang.Thread.run(Thread.java:856)
01-10 01:58:55.182: D/JavaCameraView(22833): Preview Frame received. Frame size: 373248
01-10 01:58:55.192: D/JavaCameraView(22833): Disconnecting from camera

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
OPENCV_LIB_TYPE:=STATIC

include ../../sdk/native/jni/OpenCV.mk

LOCAL_MODULE    := ndklib
LOCAL_SRC_FILES := TutorialActivity.cpp
LOCAL_SRC_FILES := set.cpp
LOCAL_SRC_FILES := hand_calc.cpp
LOCAL_SRC_FILES := hand_core.cpp
LOCAL_SRC_FILES := hand_define.h
LOCAL_LDLIBS +=  -llog -ldl

include $(BUILD_SHARED_LIBRARY)

JNI / TutorialActivity.cpp

#include <jni.h>
#include <hand_define.h>

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <vector>
#include <hand_calc.cpp>
#include <hand_core.cpp>
#include <set.cpp>

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

using namespace std;
using namespace cv;
extern "c"{

JNIEXPORT void JNICALL Java_com_example_jni_TutorialActivity_MainActivity
(JNIEnv *, jobject, jlong addrRgb, jlong addrsss, jint btnclick);

JNIEXPORT void JNICALL Java_com_example_jni_TutorialActivity_MainActivity
(JNIEnv *, jobject, jlong addrRgb, jlong addrsss, jint btnclick)
{
.
.
.
}

}

TutorialActivity.java

       package com.example.jni;

import java.io.FileOutputStream;

public class TutorialActivity extends Activity implements CvCameraViewListener2  {
.
.
.
private BaseLoaderCallback  mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
System.loadLibrary("ndklib");

mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
.
.
.
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
final int viewMode = mViewMode;

mRgba = inputFrame.rgba();
MainActivity(mRgba.getNativeObjAddr(), sss.getNativeObjAddr(), btnclick);
Button btn = (Button)findViewById(R.id.button2);

btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
btnclick = 1;
MainActivity(mRgba.getNativeObjAddr(), sss.getNativeObjAddr(), btnclick);
//Core.normalize(sss, sss, 0, 255, Core.NORM_MINMAX, CvType.CV_8U);
Utils.matToBitmap(sss, mbit);
mimg.setImageBitmap(mbit);
btnclick = 0;
}
});
return mRgba;
}

public native void MainActivity(long Rgba, long Hand, int Clk);
}

Во-первых, извините за мой плохой навык кодирования.

Я пытаюсь использовать код C ++ на Java с JNI. Когда я скопировал и отредактировал тело кода из примера Tutorial-2 для Opencv для Android, мои c ++ коды работали хорошо. но когда я попытался из нового Android-приложения Project, как, например, tutorial-2, он не работает и показывает «Opencv Не найдена реализация для родного / родного метода не найден» даже при наличии каких-либо ошибок.

Свойства проекта
* C / C ++ сборки
команда построения: $ {NDKROOT} /ndk-build.cmd
Поведение — Автоматическая сборка: проверено

* c / c ++ general — пути и символы — JNUc ++
добавил несколько каталогов.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector