gpt4 book ai didi

java - 将 char *tab[10] 转换为 java 对象 (JNI)

转载 作者:行者123 更新时间:2023-11-30 18:07:31 24 4
gpt4 key购买 nike

我正在尝试使用 JNI 在 java 中使用 C API。我不是 C 程序员...

这是我必须转换的 C“对象”:char *tab[10]

首先,我不确定它的含义:它是指向 char 的选项卡的指针,还是指向 char 的指针的选项卡? (有什么区别吗?)。

那么,等价的java对象是什么?

最佳答案

char * tab[10] 是指向字符数组的指针(指向第一个元素)。

这是 JNI API: http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/jniTOC.html

JNI 中“C char”的等效类型是 jchar - 在 java 中它是“char”原始类型;拥有“C chars”数组可以做的事情的可能性是:将其复制到java中的existand String对象中或复制到java原始char数组中。有用的链接: http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html#array_operations

第二种方式可能看起来像这样:

将 java char 数组传递到 JNI 调用中,或使用 New<PrimitiveType>Array 函数从 C 代码创建新的 java 数组。但是,您将以指向 java 中的数组的指针结束。他们将你的 C 字符复制到 java 的字符中:

jEnv->ReleaseCharArrayElements(javaCharArray, C_CharArray, JNI_COMMIT);

其中 jEnv - 是 java 环境,通过 JNI 调用传递。如果你有一个指针,你可能需要像 *C_CharArray 一样取消引用它。我认为这可能会解决。

关于java - 将 char *tab[10] 转换为 java 对象 (JNI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4469018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com