У меня есть класс C # с одним методом, скомпилированным в собственный код, который я хочу вызвать из метода Java с использованием JNA .Этот класс упакован как dll в файл с именем DataGrabber.dll.Это код C #:
namespace GrabberLibrary {
public class Grabber {
public void GetData(String projectId, String importURI){
//implementation code
}
}
}
Я реализовал интерфейс, как было предложено:
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface Grabber extends Library{
Grabber INSTANCE = (Grabber)Native.loadLibrary("Grabber", Grabber.class);
void GetData(String projectId, String importURI);
}
, а затем, когда я вызываю этот метод GetData из основного метода в Java, вот так:
System.setProperty("jna.library.path", "C:\\dlls");
Grabber sgl = Grabber.INSTANCE;
sgl.GetData("123", "http://localhost/test");
Я получаю следующее исключение:
java.lang.UnsatisfiedLinkError: Unable to load library 'Grabber': The specified module could not be found.
С другой стороны, если я добавлю имя dll, совпадающее с пространством имен, определенным в коде C # (DataGrabber) Я получаю:
java.lang.UnsatisfiedLinkError: Error looking up function 'GetData': The specified procedure could not be found.
Как я могу вызвать метод GetData?