jni 问题(初次接触,请大虾们帮忙,3Q)

来源:百度知道 编辑:UC知道 时间:2024/05/27 05:25:44
比如说c中有 int safe(int argc,char* argv[]){}
char* argv[] 这个指针数组 怎么传到jni中?
如果 写成这样
public class Safe {
public native static int safe(int argc, String[] argv);
static
{
System.loadLibrary("safe");
}
}
而本地方法中
JNIEXPORT jint JNICALL Java_Safe_safe(JNIEnv *env, jclass cl, jint argc, jobjectArray argv){
int j;
jobject x = (*env)->GetObjectArrayElement(env,argv,j);
}
又怎么把这个x 转成原来一样的指针数组char* argv[]?

//对数组中的每一个字符串进行转化

JNIEXPORT void JNICALL Java_test_D_printsome
(JNIEnv * env, jobject jobj, jobjectArray array){
jsize len = (*env)->GetArrayLength(env, array);
char str[10][128];
int i;
for(i = 0; i < len; i++){
jstring string = ((*env)->GetObjectArrayElement(env, array, i));
const char * chars = (*env)->GetStringUTFChars(env, string, 0);
strcpy(str[i], chars);
}
for(i = 0; i < len; i++){
printf("%s", str[i]);
}
}