Android中NDK开发时使用数组

NDKTest.cpp文件内容
#include<android/log.h>  //引入Adnroid打印日志文件
#include <jni.h>
#ifndef NULL
#define NULL   ((void *) 0)
#endif

#define LOG    "NDKTest"                                                    // 日志打印标识
#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG,__VA_ARGS__)   // 对应Adnroid中DEBUGg模式,下类似
#define LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG,__VA_ARGS__)
#define LOGW(...)  __android_log_print(ANDROID_LOG_WARN,LOG,__VA_ARGS__)
#define LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG,__VA_ARGS__)
#define LOGF(...)  __android_log_print(ANDROID_LOG_FATAL,LOG,__VA_ARGS__)


extern "C"   //为了兼容C++
{
    JNIEXPORT jstring JNICALL Java_ndk_test_JNI_getString(JNIEnv *env,jobject thiz) {
        return env->NewStringUTF("Hello jni");
    }
}

/**
 * 实现原生方法
 */
extern "C"
{
    JNIEXPORT jint JNICALL Java_ndk_test_JNI_plus(JNIEnv *env,jobject thiz,jint a, jint b) {
        return a+b;
    }

}

extern "C"
{
   JNIEXPORT jint JNICALL Java_ndk_test_JNI_operateArray(JNIEnv *env, jobject obj, jintArray arr1 , jintArray arr2)
   {

       jint *a1;
       jint i,result=0;
       jint a2[10];

       unsigned char * null;
       jint length_1,length_2;
       length_1 = env->GetArrayLength(arr1);
       length_2 = env->GetArrayLength(arr2);

       if(length_1==0||length_2==0)
       {

          return 0;
       }
       a1=env->GetIntArrayElements(arr1,null);
       env->GetIntArrayRegion(arr2,0,length_2,a2);

       for(i=0;i<length_2;i++)
       {
           result += a2[i]*a1[i];
           LOGI("长度%d,%d",result,result);
       }
       return result;
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值