[英]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.