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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM