Android ndk (opencv) - PullRequest
       0

Android ndk (opencv)

0 голосов
/ 18 мая 2011

Я получил сбой, когда я вызываю свои родные функции в моем приложении для Android, вот мой код:

lib libo=new lib();
public void onPreviewFrame(byte[] data, Camera camera)
{
    int s;// where w and h are width and height are the parameters of the camera
    s=libo.getdata(data);/: and getdata is my native function
}                   

my getdata.c:

#include "getdata.h"
JNIEXPORT int JNICALL JAVA_android_video8_libo_som
(JNIEnv* env, jobject obj,jbyte* data)
{
    return (data[1]);
}

getdata.h:

#include <jni.h>


#ifndef _Included_android_video8_lib
#define _Included_android_video8_lib
#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT int JNICALL JAVA_android_video8_libo_som(JNIEnv* env, jobject obj, jbyte*);

#ifdef __cplusplus
}
#endif
#endif

Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := opcv
LOCAL_SRC_FILES := getdata.c
include $(BUILD_SHARED_LIBRARY)

и класс, где я вызываю библиотеку:

package android.video8;

public class libo { 
    static {
        System.loadLibrary("opcv");
            }
        public native static  int som(int s);
}

библиотека генерируется без проблем, но выполнение приложений приводит к сбою я не знаю где ошибка спасибо

1 Ответ

1 голос
/ 18 мая 2011

Кажется, в вашем вопросе есть ошибки.В любом случае, вы используете неправильные прототипы для функций JNI.Вы должны использовать эти подписи:

JNIEXPORT
jint JNICALL JAVA_android_video8_libo_getData(JNIEnv*, jclass, jbyteArray);

JNIEXPORT
jint JNICALL JAVA_android_video8_libo_som(JNIEnv*, jclass, jint);

И использовать инструмент javah каждый раз, когда вы меняете прототип нативного метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...