您的位置:首页 > 编程语言 > C语言/C++

paip.java 调用c++ dll so总结

2014-03-05 18:05 197 查看
paip.java 调用c++ dll so总结

///////JNA (这个ms sun 的)

我目前正做着一个相关的项目,说白了JNA就是JNI的替代品,以前用JNI需要编译一层中间库,现在JNA直接调用C的库

JNA的功能和P/Invoke类似,但编写方法与P/Invoke截然不同。JNA没有使用Annotation,而是通过编写一般的Java代码来实现。

P/Invoke是.NET平台的机制。而JNA是Java平台上的一个开源类库,和其他类库没有什么区别。只需要在classpath下加入jna.jar包,就可以使用JNA

JNA提供了一个动态的C语言编写的转发器,可以自动实现Java和C的数据类型映射。你不再需要编写那个烦人的C动态链接库。

当然,这也意味着,使用JNA技术比使用JNI技术调用动态链接库会有些微的性能损失。可能速度会降低几倍。但对于绝大部分项目来说,影响不大。

作者Attilax 艾龙, EMAIL:1466519819@qq.com

来源:attilax的专栏

地址:http://blog.csdn.net/attilax

///////jnative 一个开源项目.

jnative java/jna java

jna的量基本上是jnatv的10倍..

参考

Java调用.dll文件 - 抹去浮华,沉淀深度 - ITeye技术网站.htm (jnative)

学习JNA,Jnative个人总结 - 80后的梦想 - ITeye技术网站.htm

(impt)Java JNA 详解 - 梦想是奢侈品,向奢侈品进军 - 博客频道 - CSDN.NET.htm

本文原名《使用JNA方便地调用原生函数》发表于2009年3月的“程序员”杂志上。

[-]

介绍

实现原理

调用原生函数

使用JNA调用原生函数

调用原生函数的模式

和原生代码的类型映射

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

支持常见的数据类型的映射

模拟结构体

使用JNA调用使用Struct的C函数

说明

模拟复杂结构体

结构体内部可以包含结构体对象的数组

结构体内部可以包含结构体对象的指针的数组

代码

通过回调函数实现原生代码调用Java代码

回调函数说明

模拟指针

使用PointerByReference模拟指向指针的指针

模拟指针

类详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: