当前位置:编程学习 > JAVA >>

jni编程简单问题 大牛们帮我看看什么情况

android ndk编程 我想从c返回一个byte类型数组,然后输出,但是输出的前几个都是对的,最后一个都不一样(应该不输出的)大家帮忙看看是哪里出错了。刚接触jni不太熟悉。下面是代码:

java代码:

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        byte []a=test();
        for(int i = 0;i<a.length;i++){
         System.out.println("============"+a[i]+"============");
        }       
        setContentView(R.layout.activity_main);
    }
    private native byte[] test();
    static{
     System.loadLibrary("123");
    }
}


纯c语言实现的本地代码:

#include<com_example_hellondk_MainActivity.h>
#include<stdio.h>
#include <jni.h>
#include <string.h>
#include <android/log.h>
#define LOG_TAG "MYJNI"
#define LOGI(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
JNIEXPORT jbyteArray JNICALL Java_com_example_hellondk_MainActivity_test
  (JNIEnv * env, jobject obj){
char c[] = {-71,-72,-73,-74};
int i = 0;
int sizec = strlen(c);
jbyteArray result = (*env)->NewByteArray(env, sizec);
if (result == NULL) {
return NULL;
}
(*env)->SetByteArrayRegion(env, result, 0,sizec, c);
LOGI("OK");
return result;
}


本来要输出-71,-72,-73,-74的,但是最后还会有一个不可预料的数输出来。
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,