10.6 番外:java调用动态库文件dll(附带纠正上个视频遗漏)
视频讲解:哔哩哔哩
哈哈哈哈,大家有没有迫不及待的,去调用我们自己制作的,好的,我们开始吧~
首先看下,我们制作的两个dll文件,一个是C的,有一个是C++

他们调用的方法都以一样的,没什么区别,我们先来调用t1.dll吧
首先,我们打开之前用来创建头文件所写的Java文件,完善它!!

附上之前的代码是这样的
class T1{
public native void say();
}
我们来给他添加一个静态代码块
class T1{
public native void say();
static{
}
}
在这代码块里,写什么呢。调用一个载入的方法

我们可以清楚的看到,api中就有记载了,犹豫什么,照着干,就这么简单,给他一个路径,动态的库路径!!!
class T1{
public native void say();
static{
System.load("F:\\项目代码\\java2\\T2\\t1.dll");
}
}
好的哟,我们了自己的类,那么还等什么,建一个主函数,开始创建对象,然后调用呗

如果正常运行的话,就成功啦,但是,我们之前埋了一个雷,它会出现这个错

我们来看下
UnsatisfiedLinkError
意思是指找不到指定模块,问题出在哪里呢
我们来来看下

错误就在这里,各位朋友,我们这个 方法是哪里来的,是不是要告诉下编译器下
是的引入我们之前创建的头文件 !!!!!!!!!

好的,我们从新来制作下dll文件
具体为什么这么写,详看上一篇文章

好了,我们在调用下

很好,成功调用了,依葫芦画瓢,我们来调用c++生成的文件,记得先引入缺少的头
文件,这边还要注意的是,代码依旧写在T1.java ,不能另外开一个,因为我们头文件是根据T1.Java来创建的哦,详见视频
最后总结归纳下:
第一步:创建一个头文件
第二步:根据这个头文件,写出C或C++文件
第三步:制作成DLL文件
第四步:制作对象文件
第五步:调用它
下面分享下,本视频的用到的源码
10.6 Java调用C或C++动态库文件: https://url79.ctfile.com/d/34437279-55525938-703cef?p=8844 (访问密码: 8844)

