JNA C语言与Java类型转换(不定期更新)
Posted cnliang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JNA C语言与Java类型转换(不定期更新)相关的知识,希望对你有一定的参考价值。
首先是官方给出来的映射
以下是自己在配置过程中通过网上各种资料查找到的映射,(欢迎评论补充,我会一一补充进来)
C语言 | Java |
char * | String (作为入口参数) |
byte[] (作为出口参数) | |
unsigned char * | String (作为入口参数)(不确定,没具体使用过) |
Pointer (作为出口参数) | |
int * | IntByReference |
结构体
在Java中需要设计一个类并继承Structure类
Demo:
1 public class IDInfo extends Structure { 2 3 public byte[] name = new byte[32]; //姓名 4 public byte[] sex = new byte[4]; //性别 5 public byte[] nation = new byte[12]; //民族 6 public byte[] birthday = new byte[20]; //出生日期 7 8 public static class ByValue extends IDInfo implements Structure.ByValue { 9 } 10 11 public static class ByReference extends IDInfo implements Structure.ByReference { 12 } 13 14 @Override 15 protected List<String> getFieldOrder() { 16 // 顺序必须与C语言机构体中的顺序一致 17 List<String> fieldOrderList = new ArrayList<String>(); 18 fieldOrderList.add("name"); //姓名 19 fieldOrderList.add("sex"); //性别 20 fieldOrderList.add("nation"); //民族 21 fieldOrderList.add("birthday"); //出生日期 22 23 return fieldOrderList; 24 } 25 26 }
以上是关于JNA C语言与Java类型转换(不定期更新)的主要内容,如果未能解决你的问题,请参考以下文章
Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 &