簡體   English   中英

動態鏈接庫和Java

[英]Dynamic Link Library & Java

我用C ++制作了一個dll,並用Java編寫了此類:

public class VolumeControl {

    public native float GetVolume();

    public native void SetVolume(float val);

    public native void VolumeUp();

    public native void VolumeDown();

    public native void Mute();

    static {
         System.load("some_path/VolumeControl.dll");
    }
}

如果我從此文件中調用函數,則效果很好,但是當我嘗試執行此操作時:

public class Server {

    public static void main(String[] args) {
        VolumeControl ctrl = new VolumeControl();
        ctrl.Mute();
    }
}

我得到這個:

Exception in thread "main" java.lang.UnsatisfiedLinkError:
RemoteControl.VolumeControl.Mute()V

當然,這兩個類都在同一包中。 我該如何解決? 謝謝。

Update1 :好的問題是,我將這些類添加到包中。 當我將它們移動到默認程序包時,一切正常。 但是現在,如果我想將此dll與其他軟件包一起使用,則需要重新構建它。

Update2 :實際上,當我嘗試:#javah VolumeControl時,我根本無法將其添加到程序包中:

Could not find class file for 'VolumeControl'.

Update3 :我手動將軟件包名稱添加到C ++函數中,並且可以正常工作。 謝謝。

如果將javah實用程序集成到makefile中,以確保始終在兩側(客戶端/服務器)都采用該接口,則可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM