jbyte *arr = env-> GetByteArrayElements(jarr, 0);
只有C++时才用
在C中的写法应该是
jbyte * arr = (*env)-> GetByteArrayElements(env,jarr, NULL);
---------------------------------------------------------------
在C的定义中,env是一个两级指针,而在C++的定义中,env是个一级指针
我的arrayso.c 为:
只有C++时才用
在C中的写法应该是
jbyte * arr = (*env)-> GetByteArrayElements(env,jarr, NULL);
---------------------------------------------------------------
在C的定义中,env是一个两级指针,而在C++的定义中,env是个一级指针
-------------------------------------------------------------
arraywq.h为:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class arraywq */
#ifndef _Included_arraywq
#define _Included_arraywq
#ifdef __cplusplus
extern "C " {
#endif
/*
* Class: arraywq
* Method: showarray
* Signature: (I[B)I
*/
JNIEXPORT jint JNICALL Java_arraywq_showarray
(JNIEnv *, jclass, jint, jbyteArray);
#ifdef __cplusplus
}
#endif
#endif
我的arrayso.c 为:
#include "arraywq.h "
#include <stdio.h>
void add_0(char * c,int len)
{
int i;
for(i=0;i <len;i++) *c++;
*c++= '\0 ';
}
JNIEXPORT jint JNICALL Java_arraywq_showarray
(JNIEnv *env, jclass obj, jint len, jbyteArray jarr)
{
jbyte * arr = (*env)-> GetByteArrayElements(env,jarr, 0);
char * c=(char *)arr;
add_0(c,len);
printf( "%s\n ",c);
return len;
}