gpt4 book ai didi

java - 未找到 native 的实现

转载 作者:行者123 更新时间:2023-11-30 15:30:03 25 4
gpt4 key购买 nike

我已经使用“ndk-build”编译了我的项目并生成了 .so 文件。当运行应用程序时,它会给出错误“未找到 native 的实现”。

当我在 Debug模式下运行它时,它会在调用 native 函数的地方中断,并且 eclipes 显示此屏幕 - image

我已经检查过了 - link还有其他一些,我所有的 jni 函数名称都是同步的..但不确定我哪里出错了。请帮忙

更新添加一些代码 fragment

MainActivity.java

package com.example.myproject2;


import java.io.InputStream;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.HashMap;





public class MainActivity2 extends Activity {



static int bytesize=0;

//public class fRead{






public native int getMyData(short[] shorts,int size);

static {
System.loadLibrary("mylib");
}

..
..
}

mytest.c代码

#include "com_example_myproject2_MainActivity.h"


JNIEXPORT jint JAVA_com_example_myproject2_MainActivity2_getMyData(jshortArray shorts,jint byteArrsize){



int a=0;
int i=0;
int avg=0;


return avg;

}

最佳答案

更改 getMyData 的定义

jint JAVA_com_example_myproject1_MainActivity_getMyData(jshortArray shorts,jint byteArrsize){

JNIEXPORT jint JNICALL Java_com_example_myproject1_MainActivity_getMyData(JNIEnv *env, jobject obj, jshortArray array, jint size)

MainActivity.java

package com.example.myproject1;
/* All imports */

public class MainActivity extends Activity {

static {
System.loadLibrary("mylib");
}

/* Native Function Declaration */
public static native int getMyData(short[] shorts, int size);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

getMyData(array, size); /* Native Function call */
}
}

ma​​in.c

#include <stdio.h>
#include <android/log.h>
#include <jni.h>

#define TAG "HelloJNI"

JNIEXPORT jint JNICALL Java_com_example_myproject1_MainActivity_getMyData(JNIEnv *env, jobject obj, jshortArray array, jint size)
{
__android_log_print(ANDROID_LOG_DEBUG, TAG, "JNI Function Called : getMyData");
return size;
}

输出:
当应用程序启动时。

$ adb logcat -s HelloJNI
D/HelloJNI( 672): JNI Function Called : getMyData

注意:
需要注意的是,请避免在包名称、 Activity 名称或 JNI 函数名称中包含下划线 (_)。

关于java - 未找到 native 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com