I have googled bit , but dint find way to unload dll using JNA ,from java Class.
And as i am using dll to transfer data from usb device using this dll, i have to unload my dll from java class in order to re-use my usb device with same class without closing my whole program.
here is how i load my dll using JNA
public interface UsbSensor extends Library {
UsbSensor INSTANCE = (UsbSensor) Native.loadLibrary(
(Platform.isWindows() ? "D:\\UsbDevice.dll" : "D:\\UsbDevice.dll"), UsbSensor.class);
int SearchDevices();
Pointer Startacquisition(String type);
}
and by
UsbSensor sdll = UsbSensor.INSTANCE;
Dll is loded. And here how i use my function
sdll.SearchDevices();
sdll.Startacquisition();
And now after using these function I must have to unload my dll in again load dll using above code. order reuse these function.
So how to unload dll dynamically Using JNA?
解决方案
I had the same issue but using Native.dispose() did not help. The solution to my problem was this question and answer. It basically sets instance of the native library to null and calls the garbage collector.