JNA调用.a静态库

摘要:
步骤:1.创建新的。c文件,导入一个静态库,并将其编译为一个so动态库2.JNA调用so的示例:1.欢迎使用现有的静态库文件。h、 libwelcome。a#ifndef_WELLCOME_H#define_WELLCOME_Hvoidwelcome();#Endif//欢迎。c示例#include #include“welcome.h”void welcome(){printf()wel

步骤:

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!
");
}
//生成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

JNA调用.a静态库第1张JNA调用.a静态库第2张
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
JNA调用.a静态库第3张JNA调用.a静态库第4张
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

免责声明:文章转载自《JNA调用.a静态库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇域名解析服务查询工具dnstracerEleemntUI中el-table的formatter格式化字典显示的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux jna调用so动态库

文中提到:为什么命名为libtest.so而不是test.so呢?因为jna在找so文件的时候,要匹配前缀为lib的so文件 http://zhenaihua0213.blog.163.com/blog/static/50887766201129104611955/在linux下使用jna调用本地方法的时候,需要将C写成的程序编译为so文件 1、写一个简...

JNA结构体嵌套如何调用

一、C语言结构体 typedef structECCrefPublicKey_st { unsigned intbits; unsigned charx[ECCref_MAX_LEN]; unsigned chary[ECCref_MAX_LEN]; }ECCrefPublicKey; typedef structECCCipher_st { uns...

java 用JNA调用dll 参考文档

1Java调用C语言动态库(JNA方式):回调函数、结构体数组传参、结构体数组返回 2jna结构体数组JNA结构体数组 3JNA调用C语言动态链接库学习实践总结 4Java 通过 JNA 调用 DLL 返回 char * 字符串乱码问题的解决 5jna对结构体、指针、引用、拷贝参数传递的使用 6jna模拟指针开辟空间,数组首地址获取值 7JNA结构体参数传...

Java(使用JNA)调用DLL库与C#调用DLL库的对比

前言:在项目中经常使用DLL库对硬件进行操作,在发卡过程中使用频率尤为多,今天就Java与C#中调用DLL库的使用区别做一个介绍,本文着重具体的代码编写,具体过程看以下代码。 前提条件: 笔者已经封装了一个DLL库名为:testdll.dll(具体封库细节,请查阅相关资料),库中包含两个函数: 注:Add为两个整数相加,Sub为两个整数相减。 1.C#...