10.6 番外:java調(diào)用動態(tài)庫文件dll(附帶糾正上個視頻遺漏)
視頻講解:嗶哩嗶哩
哈哈哈哈,大家有沒有迫不及待的,去調(diào)用我們自己制作的,好的,我們開始吧~
首先看下,我們制作的兩個dll文件,一個是C的,有一個是C++

他們調(diào)用的方法都以一樣的,沒什么區(qū)別,我們先來調(diào)用t1.dll吧
首先,我們打開之前用來創(chuàng)建頭文件所寫的Java文件,完善它??!

附上之前的代碼是這樣的
class T1{
????????????public native void say();?
}
我們來給他添加一個靜態(tài)代碼塊
????class T1{
????????????public native void say();
????????????static{
????????????}
????}
在這代碼塊里,寫什么呢。調(diào)用一個載入的方法

我們可以清楚的看到,api中就有記載了,猶豫什么,照著干,就這么簡單,給他一個路徑,動態(tài)的庫路徑?。?!
? ? class T1{
????????????public native void say();
????????????static{
????????????????????????System.load("F:\\項目代碼\\java2\\T2\\t1.dll");
????????????}
????}
好的喲,我們了自己的類,那么還等什么,建一個主函數(shù),開始創(chuàng)建對象,然后調(diào)用唄

如果正常運行的話,就成功啦,但是,我們之前埋了一個雷,它會出現(xiàn)這個錯

我們來看下
UnsatisfiedLinkError
意思是指找不到指定模塊,問題出在哪里呢
我們來來看下

錯誤就在這里,各位朋友,我們這個? ?方法是哪里來的,是不是要告訴下編譯器下
是的引入我們之前創(chuàng)建的頭文件? ?。。。。。。。?!

好的,我們從新來制作下dll文件
具體為什么這么寫,詳看上一篇文章

好了,我們在調(diào)用下

很好,成功調(diào)用了,依葫蘆畫瓢,我們來調(diào)用c++生成的文件,記得先引入缺少的頭
文件,這邊還要注意的是,代碼依舊寫在T1.java ,不能另外開一個,因為我們頭文件是根據(jù)T1.Java來創(chuàng)建的哦,詳見視頻
最后總結歸納下:
第一步:創(chuàng)建一個頭文件
第二步:根據(jù)這個頭文件,寫出C或C++文件
第三步:制作成DLL文件
第四步:制作對象文件
第五步:調(diào)用它
下面分享下,本視頻的用到的源碼
10.6 Java調(diào)用C或C++動態(tài)庫文件: https://url79.ctfile.com/d/34437279-55525938-703cef?p=8844 (訪問密碼: 8844)