1. 程式人生 > 實用技巧 >JNA呼叫.a靜態庫

JNA呼叫.a靜態庫

步驟:

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;
import com.sun.jna.Native; public interface Clibrary extends Library{ Clibrary INSTANCE = (Clibrary) Native.loadLibrary("test", Clibrary.class); void test(); }
Clibrary.java
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