java調(diào)用第三方dll文件 究竟是.Net好還是Java好,歡迎大家發(fā)言,暢所欲言?
究竟是.Net好還是Java好,歡迎大家發(fā)言,暢所欲言?我選擇dotnet,因?yàn)橛钪嬷杏械谝粋€(gè)ide-vs2019祝福,不接受駁斥。我該怎么用Java程序調(diào)用C#生成的dll文件?首先,您需要編寫(xiě)本機(jī)
究竟是.Net好還是Java好,歡迎大家發(fā)言,暢所欲言?
我選擇dotnet,因?yàn)橛钪嬷杏械谝粋€(gè)ide-vs2019祝福,不接受駁斥。
我該怎么用Java程序調(diào)用C#生成的dll文件?
首先,您需要編寫(xiě)本機(jī)Java方法。公共類(lèi)測(cè)試{靜態(tài){System.loadLibrary文件(“mydll”)public static void main(string[]args){new test()。Test()}public native void Test()}
2是用javac編譯的。使用javah生成頭文件。生產(chǎn)頭文件位于執(zhí)行這些命令的目錄中。
3、編寫(xiě)c代碼。包括此頭文件。在頭文件中實(shí)現(xiàn)測(cè)試功能。
4、編譯的C語(yǔ)言程序。將C轉(zhuǎn)換成庫(kù)文件的DLL后綴。
5、在本例中,只需將庫(kù)文件放在項(xiàng)目的根目錄中。
java調(diào)用C寫(xiě)的DLL?
C調(diào)用C的DLL更方便。
1. 創(chuàng)建一個(gè)新的C#類(lèi)庫(kù)
在代碼編輯之后,生成類(lèi)庫(kù)并得到一個(gè)DLL
2。創(chuàng)建一個(gè)新的控制臺(tái)應(yīng)用程序來(lái)調(diào)用類(lèi)庫(kù)
2.1右鍵單擊引用,在彈出的對(duì)話框中單擊添加,切換到瀏覽選項(xiàng)卡,然后找到生成的DLL
添加后,控制臺(tái)應(yīng)用程序變成這樣
2.2,您可以調(diào)用它。首先,介紹類(lèi)庫(kù)的名稱(chēng)空間,然后可以調(diào)用它。
3. 構(gòu)建控制臺(tái)應(yīng)用程序并運(yùn)行它(記住將控制臺(tái)應(yīng)用程序1設(shè)置為啟動(dòng)項(xiàng))
以上是一個(gè)簡(jiǎn)單的調(diào)用。當(dāng)然,C#甚至可以將所有表單封裝到DLL中,被調(diào)用方并不局限于控制臺(tái)應(yīng)用程序。但是想法是一致的
如果DLL不是你寫(xiě)的,并且你想調(diào)用的函數(shù)不是你寫(xiě)的,Stdcall聲明VB direct call會(huì)報(bào)告一個(gè)錯(cuò)誤
如果DLL是你寫(xiě)的,注意調(diào)用約定,看下面的代碼
**********以下是dll代碼。這是用CPP
外部“C”uuudeclspec(dllexport)voiduuustdcall HelloWorld()
{
消息框(null,“HelloWorld”,“HelloWorld”,null)}。Def
庫(kù)“XXX”
導(dǎo)出
在此處添加地獄世界@1
*******************************************************
公共聲明子HelloWorld庫(kù)“XXXX.dll“那么,就可以用VB代碼了。VB.net版JNI是一個(gè)通過(guò)Java調(diào)用C/C的動(dòng)態(tài)鏈接庫(kù)(DLL)。所以我想到了。類(lèi)-->。H-->dll是不正確的,這也違背了JNI的初衷。DLL是由C/C生成的。以前的一個(gè)項(xiàng)目使用java調(diào)用C/cdll,所以我對(duì)此很熟悉。該DLL由C程序員編寫(xiě),可以在microsoftvisualc6.0編輯器中生成。然后Java程序員使用JNI調(diào)用DLL中實(shí)現(xiàn)的函數(shù)(方法)。
VB.net如何調(diào)用C DLL,有重謝?
不要告訴我這個(gè)過(guò)程。
將DLL文件放入項(xiàng)目的bindebugdirectory。如圖所示:
請(qǐng)單擊“輸入圖片說(shuō)明”
,然后在要引用的文件代碼中添加這樣的語(yǔ)句:
“[dllimport(”***。DLL”,調(diào)用約定=呼叫會(huì)議.Cdecl)],然后按以下格式聲明所需函數(shù):
public static external ReturnType functionname(type name)
public可以替換為其他內(nèi)容,如private,而static external則是必需的。如圖
2.,則調(diào)用它。如圖所示: