本文目錄一覽:
- 1、請問,java可以調DLL接口嗎?
- 2、java web怎麼調用dll
- 3、Java怎麼調用.net DLL
- 4、java調用c++ dll有幾種方法
- 5、java調用dll,如何傳入指針變量
- 6、如何解決java調dll報Unable to load library的錯誤
請問,java可以調DLL接口嗎?
可以調用,別說是DLL了,就是COM都可以調用的!
class firstJNI
{
public native void displayHelloWorld();
public native void displayOther();
private native String getLine(String prompt);
static {
System.loadLibrary(“firstJNI”);//This is firstJNI.DLL
/*if generated by borland
System.loadLibrary(“firstjni”);//This is firstjni.dll
*/
}
public static void main(String[] args)
{
firstJNI JN=new firstJNI();
JN.displayHelloWorld();
JN.displayOther();
String input = JN.getLine(“Enter Some Thing “);
System.out.println(“You Entered ” + input);
}
}
java web怎麼調用dll
java調用dll要用到jni(java本地接口)
例如程序TestDll.java,內容為:
public class TestDll
{
static
{
System.loadLibrary(“xxx.dll”);
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
TestDll test = new TestDll();
test.set(10);
System.out.println(test.get());
}
}
這個例子只是為了示意jni如何用,並不是實際的工程代碼。
你可以搜索一下jni的詳細信息,通常都有詳細的例子(如使用user32.dll的例子)
Java怎麼調用.net DLL
JAVA通過JNI調用本地方法,而本地方法是以庫文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX機器上是SO文件形式)。通過調用本地的庫文件的內部方法,使JAVA可以實現和本地機器的緊密聯繫,調用系統級的各接口方法。
簡單介紹及應用如下:
一、JAVA中所需要做的工作
在JAVA程序中,首先需要在類中聲明所調用的庫名稱,如下:
static {
System.loadLibrary(“goodluck”);
}
在這裡,庫的擴展名字可以不用寫出來,究竟是DLL還是SO,由系統自己判斷。
還需要對將要調用的方法做本地聲明,關鍵字為native。並且只需要聲明,而不需要具 體實現。如下:
public native static void set(int i);
public native static int get();
然後編譯該JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就會生成C/C++的頭文件。
例如程序testdll.java,內容為:
public class testdll
{
static
{
System.loadLibrary(“goodluck”);
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
testdll test = new testdll();
test.set(10);
System.out.println(test.get());
}
}
用javac testdll.java編譯它,會生成testdll.class。
再用javah testdll,則會在當前目錄下生成testdll.h文件,這個文件需要被C/C++程序調用來生成所需的庫文件。
java調用c++ dll有幾種方法
我是通過一個外部的JAR包來間接來獲得DLL文件的句柄 的,它就是jacob了,這是java com brige的簡寫,呵呵, 這個名稱起得非常形象吧,我用的版本是jacob 1.9的,你可以到它的官方網站去下載,下載回來的壓縮包中會有兩個文件我們需要用到的,一個是jacob.dll,一個是jacob.jar,jacob.dll可以將它複製到系統的system32目錄下,而jacob.jar文件,直接將它加入到項目的庫中就可以了。這兩項準備工作完成後,就可以開始嘗試調用了。
新建一個類,引入jacob.jar中的兩個類,
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
然後通過dll的ControllerId來讀取DLL文件
public class Print {
private ActiveXComponent printController = null;
private Dispatch printObj = null;/*** 默認controllerId的方法*/public Print(){try{printController = new ActiveXComponent(POSControler.Controler);
printObj = (Dispatch)printController.getObject();
}catch(Exception e){
printObj = new Dispatch();
如果方法dll中的方法是空參數時,直接call一下就可以了,如
Dispatch.call(printObj,setDefaultFont);而調用有參數的方法時,則需要將參數在後面依次傳入,注意按順序噢:
java調用dll,如何傳入指針變量
問題解答:
1Java中調用指針類型的參數:需要創建Pointer變量,並為其分配空間
2.整形的數據可以直接傳入;
3.JNative對CString類型支持不是很良好,調用CString的方法時,經常會報一些異常,所以我把路徑改成的字符指針;
4.輸入型參數作為輸出:可以參見以上的例子,數組c是如何設置和輸出的。
如何解決java調dll報Unable to load library的錯誤
java調用dll文件有兩個函數,分別為System.load 和 System.loadLibrary。如果在調用時出現Unable to load library的錯誤,可以通過下面的步驟進行解決:
1、使用System.load時需要輸入文件的全路徑,比如:
System.load(“D:\\eclipse\\test.dll”);
如果使用該函數報錯,首先需要檢查路徑是否寫全寫對,然後到指定的路徑檢查文件是否存在,有沒有被隱藏或者加密;
2、使用System.loadlibrary函數時,應用會在系統的library的目錄中尋找符合條件的庫文件,在window系統下,需要將需要加載的庫文件(.dll)放在JDK安裝目錄下的include目錄下,在linux系統下一般是放到/usr/lib目錄下。
也可以使用-Djava.library.path=[path]參數,來指定Java程序加載庫文件的路徑。
3、在window中,最好使用Windows的C/C++編譯器生成dll文件,否則調用會有一些問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/232117.html