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类型转换(不定期更新)的主要内容,如果未能解决你的问题,请参考以下文章

Java跨语言调用,使用JNA访问Java外部接口

jna调用c编写的dll

Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2 &

如何使用 TypeConverter 通过 JNA 将 C 整数映射到 Java 枚举?

JNA的用法

java用jna调用C语言dll接口中的回调函数怎么写