java調用dll,java調用dll帶參數

本文目錄一覽:

請問,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-tw/n/232117.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:49
下一篇 2024-12-11 12:49

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論