继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

jna对dll&so的调用

小国图志
关注TA
已关注
手记 1
粉丝 9
获赞 3

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();
}
}

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP