经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
jextract的使用
来源:cnblogs  作者:过移  时间:2023/12/22 16:22:04  对本文有异议

写这个博客的目的:新人去看jextract的官网是看不懂的,就算看懂了也不会使用,一头雾水,我会从0开始教如何使用,如何搭配java去调用c函数。
首先我们得了解jextract是什么,官网的解释是一种从本机库头文件机械地生成 Java 绑定的工具。该工具利用 clang C API 来解析与给定本机库关联的标头,生成的 Java 绑定基于 Foreign Function & Memory API。该工具最初是在 Project Panama 的背景下开发的(然后在 Project Panama Early Access 二进制文件中提供)。
官网链接:https://github.com/openjdk/jextract
为什么会考虑到使用jextract呢?因为jni的那个太老而且操作太繁琐了
接下来开始讲解如何使用jextract

jextract-21的文件的下载

jextract-21的windows版本的文件下载链接:https://download.java.net/java/early_access/jextract/1/openjdk-21-jextract+1-2_windows-x64_bin.tar.gz
下载并解压:

然后配置一下环境变量:

jextract的使用

先写个.h的头文件

代码:

  1. //point.h
  2. #include<stdio.h>
  3. void sayHello();

然后再写个.c的实现源文件

  1. #include "point.h"
  2. void sayHello(){
  3. printf("hello world");
  4. }

接下来就是编译链接成lib

  1. gcc -c point.c
  2. ar -cr pointlib.lib point.o

然后我们看一下jextract的使用说明书

可以看出--source是生成java资源文件的
而-t是生成到某个目录的名称
比如说:

  1. jextract --source -t org.jextract point.h

就是生成java源代码并存放到本地目录的org.jextract目录下面
使用jextract

  1. jextract --source -t org.jextract point.h

展示效果图:

然后你运行是肯定必报错的,因为没有链接到lib里面
真正使用jextract应该这样使用

  1. jextract --source -t 生成的包目录 -l链接lib 文件.h

这样就链接到了。
不过我的建议是官网有一个这样的例子:
https://github.com/openjdk/jextract/tree/master/samples/helloworld
兄弟们可以下载起来,然后在linux环境下跑一跑。
好,完结

原文链接:https://www.cnblogs.com/nanshaws/p/17918716.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号