JNI学习笔记

来源:互联网 发布:桥林中学的网络 编辑:程序博客网 时间:2024/04/29 20:25

1.使用JNI常见错误类型:

常见错误
* findLibrary returned null
* CPU平台不匹配
* 加载类库时,写错类库名字


* 本地方法找不到
* 忘记加载类库
* c代码中方法名写错了

2.传递数组

public class MainActivity extends Activity {static{System.loadLibrary("hello");}    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    int[] arr = {1,2,3,4,5};    public void click(View v){    arrayEncode(arr);    for (int i : arr) {System.out.println(i);}    }        public native void arrayEncode(int[] arr);}
理解记忆:
int length = (*env)->GetArrayLength(env, jintarr);
int* arrp = (*env)->GetIntArrayElements(env, jintarr, 0);

#include <jni.h>JNIEXPORT void JNICALL Java_com_itheima_array_MainActivity_arrayEncode  (JNIEnv * env, jobject obj, jintArray jintarr){//拿到整型数组的长度以及第0个元素的地址 //jsize       (*GetArrayLength)(JNIEnv*, jarray);int length = (*env)->GetArrayLength(env, jintarr); //jint*       (*GetIntArrayElements)(JNIEnv*, jintArray, jboolean*);int* arrp = (*env)->GetIntArrayElements(env, jintarr, 0);int i;for(i = 0;i < length; i++){*(arrp + i) += 10;}}


0 0
原创粉丝点击