私は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:OK問題は、これらのクラスをパッケージに追加したことです。それらをデフォルトのパッケージに移動すると、すべてが正常に機能します。しかし、このdllを別のパッケージで使用したい場合は、再構築する必要があります。
Update2:実際にパッケージに追加できません。試してみると:#javah VolumeControl、エラーが発生します:
Could not find class file for 'VolumeControl'.
Update3:パッケージの名前をC ++関数に手動で追加しましたが、機能します。ありがとう。