Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android将字符数组发送到JNI c++;_Java_Android_C++_Java Native Interface - Fatal编程技术网

Java Android将字符数组发送到JNI c++;

Java Android将字符数组发送到JNI c++;,java,android,c++,java-native-interface,Java,Android,C++,Java Native Interface,你好 我有一个问题,如何将我的字符数组发送到JNI C++代码?我只知道如何发送整数 A具有此数组char[]chars=password.tocharray() 和私有本机void jnichrypt(char[]chars) 我的JNI方法如下所示 Java_com_kru13_ndkdemos_MainActivity_JNIEncrypt( JNIEnv* env, jobject obj, ?????) 我想问一下JNI方法的外观如何?我需要在C++代码< /p>中使用char数组

你好

我有一个问题,如何将我的字符数组发送到JNI C++代码?我只知道如何发送整数

A具有此数组
char[]chars=password.tocharray()

私有本机void jnichrypt(char[]chars)

我的JNI方法如下所示

Java_com_kru13_ndkdemos_MainActivity_JNIEncrypt( JNIEnv* env, jobject  obj, ?????)
我想问一下JNI方法的外观如何?我需要在C++代码< /p>中使用char数组
而您

为什么不将其作为
字符串
传递,这在JNI中是
jstring

// Java side
private native void JNIEncrypt(String password);

// Native JNI side
Java_com_kru13_ndkdemos_MainActivity_JNIEncrypt(JNIEnv* env, jobject thiz, jstring password);
然后可以通过()和相关的or()访问字符串JNI端。例如:

const char* utf8 = env->GetStringUTFChars(password, NULL);
// do something with utf8
env->ReleaseStringUTFChars(password, utf8);
它将是:

Java_com_kru13_ndkdemos_MainActivity_JNIEncrypt( JNIEnv* env, jobject  obj, jcharArray array)

在函数内部,您必须使用
env->GetCharArrayElements(…)
toCharArray
从字符串中获取Unicode/UTF-16代码单元的序列。在Android上,你可能希望在C++端上使用Unicode /UTF-8,但这取决于你想使用的C++库。一旦使用Java
String
类来获取字节

注意:
GetStringUTFChars
提供修改的UTF-8代码单元,符合Unicode的库拒绝使用这些单元

private void JNIEncrypt(String string) {
    JNIEncrypt(string.getBytes("UTF-8")); 
    // Or, for the OS default, string.getBytes()
}

private native void JNIEncrypt(byte[] chars);

当你朝相反的方向走的时候,你可以通过参考