`
longgangbai
  • 浏览: 7325564 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JNA编程之数据类型映射

 
阅读更多

 

1 ,当前路径是在项目下,而不是 bin 输出目录下。

2 ,数据结构的对应关系:

Java—C和操作系统数据类型的对应表

Java Type

C Type

Native Representation

boolean

int

32-bit integer (customizable)

byte

char

8-bit integer

char

wchar_t

platform-dependent

short

short

16-bit integer

int

int

32-bit integer

long

long long, __int64

64-bit integer

float

float

32-bit floating point

double

double

64-bit floating point

Buffer
  Pointer

pointer

platform-dependent (32- or 64-bit pointer to memory)

<T>[] (array of primitive type)

pointer
  array

32- or 64-bit pointer to memory (argument/return)
  contiguous memory (struct member)

除了上面的类型, JNA 还支持常见的数据类型的映射。  

String

char*

NUL-terminated array (native encoding or jna.encoding )

WString  

wchar_t*

NUL-terminated array (unicode)

String[]

char**

NULL-terminated array of C strings

WString[]  

wchar_t**

NULL-terminated array of wide C strings

Structure  

struct*
  struct

pointer to struct (argument or return) ( or explicitly )
  struct by value (member of struct) ( or explicitly )

Union  

union

same as Structure  

Structure[]  

struct[]

array of structs, contiguous in memory

Callback  

<T> (*fp)()

function pointer (Java or native)

NativeMapped  

varies

depends on definition

NativeLong  

long

platform-dependent (32- or 64-bit integer)

PointerType  

pointer

same as Pointer  

 

 

Unsigned types use the same mappings as signed types. C enums are usually interchangeable with "int".

 

分享到:
评论

相关推荐

    jna.rar_jna_jna.jar_jna文件

    接口映射允许开发者定义Java接口来代表本地函数,而类型映射则处理Java数据类型和本地数据类型的转换,确保调用的正确性。例如,如果你需要调用Windows API中的某个函数,你可以创建一个接口,然后通过JNA的Platform...

    JNA 4.1.0 官方版

    JNA会自动处理类型映射和函数调用,极大地简化了跨平台的原生调用过程。 总结来说,JNA 4.1.0是Java平台上的一个重要工具,它简化了Java与操作系统底层交互的过程,让开发者可以更高效地利用系统资源。`jna-...

    jna-3.3.0 & jna-3.3.0-platform

    - JNA支持多种数据类型转换,包括基本类型(如int、double等)、复杂类型(如结构体、数组)以及自定义Java类。 2. **JNA平台库(jna-3.3.0-platform.jar)** - 平台库包含了特定于操作系统的类型定义和功能接口...

    开源项目JNA-中文翻译版

    4. **处理复杂类型**:JNA支持多种数据类型的自动映射,包括基本类型、数组、结构体、枚举等。对于复杂类型,可以通过`Structure`类进行自定义映射。 在《开源项目JNA-中文翻译版》中,你将找到关于如何利用JNA进行...

    JNA所需要的jar包

    3. **数据类型映射**:JNA提供了多种Java和本地数据类型的映射,如`IntType`对应C语言的int,`String`对应C语言的字符数组。用户还可以自定义映射规则。 4. **回调函数**:JNA支持从本地库调用Java方法,只需要将...

    jna资料3.0api

    JNA提供了一个映射表,将Java类型映射到C语言的对应类型。例如: - Java的`boolean`对应C的32位整型(可定制)。 - `byte`对应C的8位整型。 - `char`可能对应C的`char`或`wchar_t`,具体取决于平台。 JNA的这些...

    JNA_Test.rar.rar

    3. **数据类型映射**:JNA提供了丰富的数据类型映射,如`int`、`long`、`String`等,以及复杂结构体和数组的映射。例如,可以使用`Pointer`类型来操作内存地址,使用`Structure`来表示结构体。 4. **回调函数**:...

    jna-4.4.0.jar

    JNA不仅支持基本类型的映射,还支持更复杂的数据类型,如结构体、枚举等。此外,JNA还提供了回调函数的支持,可以将Java方法注册为本地库的回调函数。此外,JNA还提供了内存管理、错误处理等功能,以满足开发者的...

    jna-4.2.2.jar jna-platform-4.2.2.jar

    而"jna-4.2.2.jar"则是核心的JNA库,提供了与本地代码交互的基础结构,包括内存管理、类型映射和调用约定等。 使用JNA时,开发者可以定义一个Java接口,该接口声明了要调用的本地方法,然后JNA会自动处理底层的调用...

    jna-example.jar包

    "jna.jar"是JNA的主要库,包含了核心的映射和转换机制,以及基本的数据类型转换等功能。而"platform.jar"则是JNA的平台依赖部分,包含了针对不同操作系统(如Windows、Linux、macOS等)的特定API映射。这两个库结合...

    jna3.2.1.rar

    2. **类型映射**:JNA提供了一套自动类型转换机制,将Java类型转换为本地类型的映射。例如,Java的`int`对应于C的`int`,`String`对应于C的`const char*`。对于复杂类型,如结构体,JNA也支持自定义映射。 3. **回...

    JNA相关包 jna.jar

    它使用了一个基于类型映射的简单模型,将Java数据类型转换为本地平台的对应类型,从而能够调用本地函数。 标签"JNA相关包"提示我们关注JNA的使用场景和优势。JNA的使用广泛,包括但不限于以下几点: 1. **系统调用*...

    Jna调用动态库相关jar包

    JNA通过提供一种高级映射机制,使得开发者能够轻松地调用C、C++和其他本地库中的函数,甚至可以访问结构体和数组等复杂数据类型。 标题中的"Jna调用动态库相关jar包"指的是使用JNA库来调用DLL动态链接库的Java应用...

    jna和examples的jar包

    同时,它也支持自定义类型映射,以适应更复杂的本地数据结构。 3. **内存管理**:JNA 自动处理了本地内存的分配和释放,开发者不必担心 JNI 中常见的内存泄漏问题。 4. **回调函数**:JNA 支持从本地代码回调 Java...

    jna API及jar包

    1. **类型映射**:JNA能自动将Java数据类型映射到本地平台的数据类型,如将Java的int映射到C的int。 2. **结构体和联合体支持**:JNA允许定义Java类来表示C的结构体和联合体,使得Java可以方便地操作这些复杂数据...

    JNA需要的jar_附赠其它两个版本.zip

    此外,JNA还支持自定义类型映射,以处理复杂的数据结构。 3. **Platform库**:jna-platform-4.5.2.jar提供了对各种操作系统API的预定义映射,包括Windows API、Unix/Linux系统调用以及Apple的Cocoa和Carbon框架。这...

    JNA调用.dll文件或.so动态链接库的代码demo

    JNA的核心概念包括接口映射、类型映射和指针管理。 2. **使用JNA的步骤**: - **定义Native Interface**:创建一个Java接口,声明要调用的本地函数。接口的方法签名应与本地函数的参数和返回值类型匹配。 - **...

    jna-3.1.0 Jna所需要的jar包

    3. **类型映射**:JNA提供了丰富的类型映射,使得Java和C的数据类型转换更为便捷。 4. **自动内存管理**:JNA处理了本地函数调用的内存管理,包括参数的传递和返回值的释放。 **JNA-3.1.0** 版本可能包含以下组件:...

    jna-4.0,jar

    2. **数据类型映射**:JNA能自动将Java数据类型映射到对应的原生数据类型。例如,Java的`int`映射到C的`int`,`String`映射到C的`char *`等。 3. **指针处理**:JNA支持对指针的操作,包括传递指针参数、返回指针...

    JNA的jar包

    JNA的工作原理是基于一个“类型映射”系统,它将Java类型转换为对应的C类型,并且可以处理复杂的数据结构和指针操作。例如,Java的String可以被映射到C的char*,而Java的List可以被映射到C的数组或结构体。此外,JNA...

Global site tag (gtag.js) - Google Analytics