2

“Java Native Interface Programmer's Guide and Specification”一书的第3章,说“原始类型的映射很简单”,我对这句话有点困惑。我们知道c数据类型的大小是不确定的,它取决于程序运行、编译的环境……比如int类型的大小可能是2字节或4字节。但是java数据类型的大小是确定的。int的大小是4个字节。

那么,jni如何清楚地映射java和c/c++之间的数据类型。

任何答案将不胜感激!

4

2 回答 2

1

好吧,在 C 中,有一个名为的模块stdint.h定义了类型int64_tint32_t和朋友,这确实使映射“简单明了”。

但是您应该注意到,在 C 的任何特定实现中,plain old 的大小int都没有准确指定。作者确实对“直截了当”这个词非常松散,并假设您会将其理解为类似于“Javaint映射到 32 位的 C 有符号整数类型”。

于 2013-10-07T05:46:20.133 回答
1

jni.h头文件定义了适当的原始类型:jint、jlong​​、jchar 等。这些被声明为与相应的 Java 原语的大小相匹配。在您的 JNI 代码中使用这些。

于 2013-10-07T16:05:36.023 回答