JNA呼叫.a靜態庫
阿新 • • 發佈:2020-11-02
步驟:
1. 新建.c檔案,引入靜態庫,編譯為so動態庫
2.JNA呼叫so
例子:
1.已經存在的靜態庫檔案welcome.h、libwelcome.a
#ifndef _WELCOME_H #define _WELCOME_H void welcome(); #endif
//welcome.c樣例 #include<stdio.h> #include"welcome.h" void welcome() { printf("welcome to my code world!\n"); }
//生成libwelcome.a,專案背景中已經存在 gcc -Wall -O2 -fPIC -I./ -c -o welcome.o welcome.c ar crv libwelcome.a welcome.o
2.新建test.c,呼叫welcome中函式
#include<stdio.h> #include "welcome.h" void test(void) { welcome(); }
//編譯 gcc -Wall -O2 -fPIC -I./ -c -o test.o test.c
3.把靜態庫直接打到動態庫中去
gcc -shared test.o -L. -lwelcome -o libtest.so
生成libtest.so,lwelcome選項把libwelcome.a的函式加入動態庫中
4.java中呼叫libtest.so
import com.sun.jna.Library;Clibrary.javaimport com.sun.jna.Native; public interface Clibrary extends Library{ Clibrary INSTANCE = (Clibrary) Native.loadLibrary("test", Clibrary.class); void test(); }
public class TsetJNA { public static void main(String[] args) { Clibrary.INSTANCE.test(); } }TsetJNA.java
5.下載jna-5.6.0.jar
6.執行
javac -cp :./jna-5.6.0.jar *.java
java -cp :./jna-5.6.0.jar TsetJNA