android ndk (opencv)



当我在我的安卓应用程序中调用我的本机函数时,我遇到了崩溃,这是我的代码:

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
}                   

我的获取数据.c :

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

获取数据.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)

以及我称之为 lib 的类:

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

库生成没有问题,但应用程序的执行让我崩溃我不知道错误在哪里 谢谢

您的问题中似乎有一些错误。无论如何,您对 JNI 函数使用了错误的原型。您应该使用以下签名:

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

并且每次更改本机方法的原型时都使用javah工具。

相关内容

  • 没有找到相关文章

最新更新