c unsigned char cmd[] 对应的java中jna的什么类型

2025-05-23 20:24:42
推荐回答(1个)
回答1:

那个  C 的 int 是和 Java 的 int 直接对应的么?

在 Java 中 int 是固定32位的。


C 的 char 是多少位的?Java 中 char 是无符号2字节,byte[] 是有符号 1 字节。


我试了一个 JNI 把下面 Java 编译了一下得到 C 的 Header 文件。

public class HelloN
{
public native int hello1(int a, byte[] b);
public native int hello2(short a, char[] b);
public native int hello3(long a, int[] b);
}
...
JNIEXPORT jint JNICALL Java_HelloN_hello1
  (JNIEnv *, jobject, jint, jbyteArray);

JNIEXPORT jint JNICALL Java_HelloN_hello2
  (JNIEnv *, jobject, jshort, jcharArray);

JNIEXPORT jint JNICALL Java_HelloN_hello3
  (JNIEnv *, jobject, jlong, jintArray);
...

 

JNI 中关于类型的样例: