为了账号安全,请及时绑定邮箱和手机立即绑定

jna对dll&so的调用

标签:
Java C

dll&so的生成
dll生成方法:
用记事本(notepad++)打开一个空的c语言源代码页面,在其中按照c语言规范写几个简单函数:
#include<stdio.h>
void hello(){
printf("hello world!");
}
int suan(int a,int b){
int c;
c = a + b;
return c;
}
一、如果windows有安装gcc,则打开cmd,用cd打开到c源码目录,输入:
gcc -shared -o 文件名.dll 文件名.c  
即可获得dll文件。
二、如果windows没有装gcc,可以rz命令把源码上传到云服务器,因为linux默认自带gcc,所以可以直接编译。
Dll文件:gcc -fPIC -shared 文件名.c -o 文件名.dll
So文件:gcc -shared -fpic -o 文件名.so 文件名.c
然后可以用sz 文件名,这条命令再把dll下载回电脑上。
dll&so的环境配置
前往各大论坛下载jna.jar开发包,并新建一个java项目将jar包挂载上去。
在根目录下新建一个lib文件夹,并在项目名上右键打开项目配置目录。
选择source下的src文件夹,选中第三项双击点开
选择workspace,选择到项目的lib文件夹下
将自己写好的dll&so文件放到lib文件目录下。
dll&so的使用
新建一个interface(接口)文件,并让其继承Library接口。
范例代码如下:
import com.sun.jna.Library;
import com.sun.jna.Native;

public interface ceshi extends Library{
ceshi cc = Native.loadLibrary("dll或者so名字", ceshi.class);//声明引用文件名字
public void hello();//对c源码所写的全部方法名,写出对应接口
public int suan(int a,int b);
}

需要注意的是,c源码的方法名必须和这个声明类里面的一模一样,不然会报错,此外引用声明处不用写引用文件的后缀,只写名字就可以了。

搞定之后就要用其他函数调用试试看了,新建一个Main.class
输入以下代码测试:
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int c = ceshi.cc.suan(s.nextInt(), s.nextInt());
System.out.println(c);
ceshi.cc.hello();
}
}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消