jextract的使用
寫這個博客的目的:新人去看jextract的官網是看不懂的,就算看懂了也不會使用,一頭霧水,我會從0開始教如何使用,如何搭配java去調用c函數。
首先我們得了解jextract是什么,官網的解釋是一種從本機庫頭文件機械地生成 Java 綁定的工具。該工具利用 clang C API 來解析與給定本機庫關聯的標頭,生成的 Java 綁定基于 Foreign Function & Memory API。該工具最初是在 Project Panama 的背景下開發(fā)的(然后在 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
下載并解壓:
然后配置一下環(huán)境變量:
jextract的使用
先寫個.h的頭文件
代碼:
//point.h
#include<stdio.h>
void sayHello();
然后再寫個.c的實現源文件
#include "point.h"
void sayHello(){
printf("hello world");
}
接下來就是編譯鏈接成lib
gcc -c point.c
ar -cr pointlib.lib point.o
然后我們看一下jextract的使用說明書
可以看出--source是生成java資源文件的
而-t是生成到某個目錄的名稱
比如說:
jextract --source -t org.jextract point.h
就是生成java源代碼并存放到本地目錄的org.jextract目錄下面
使用jextract
jextract --source -t org.jextract point.h
展示效果圖:
然后你運行是肯定必報錯的,因為沒有鏈接到lib里面
真正使用jextract應該這樣使用
jextract --source -t 生成的包目錄 -l鏈接lib庫 文件.h
這樣就鏈接到了。
不過我的建議是官網有一個這樣的例子:
https://github.com/openjdk/jextract/tree/master/samples/helloworld
兄弟們可以下載起來,然后在linux環(huán)境下跑一跑。
好,完結
總結
以上是生活随笔為你收集整理的jextract的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何给开源项目发起提案
- 下一篇: java信息管理系统总结_java实现科