Я создал код Java, который пытается получить доступ к методу LoadProject
класса IProjectFactory
, определенного в myAPI.dll
. Описание файла DLL гласит: IProjectFactory используется для загрузки файла проекта в память. IProjectFactory является статическим классом в сборке myAPI.dll. Он предоставляет метод LoadProject, который принимает строку, содержащую путь к файлу для загрузки, и возвращает ссылку на результирующий IProject. Используя интерфейс IProject, вы можете различными способами управлять загруженным проектом.
import com.sun.jna.Library;
import com.sun.jna.Native;
public class MyClass {
public interface IProjectFactory extends Library {
public Object LoadProject(String fileName);
}
public MyClass() {
//System.loadLibrary("myAPI");
load();
}
void load() {
String fileName = "xxx.sp";
IProjectFactory api = (IProjectFactory) Native.loadLibrary("myAPI",IProjectFactory.class);
try {
Object project = api.LoadProject(fileName);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
После запуска этого кода было сгенерировано следующее сообщение об ошибке:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Error looking up function 'LoadProject': The specified procedure could not be found.
at com.sun.jna.Function.<init>(Function.java:179)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:350)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:330)
at com.sun.jna.Library$Handler.invoke(Library.java:203)
at $Proxy0.LoadProject(Unknown Source)
Означает ли это, что myAPI
не содержит класс IProjectFactory с методом LoadProject
?