Задача - вызвать метод из существующей библиотеки DLL.
Я пытаюсь сделать это на примере CopyFileA из kernel32.dll.
Подпись метода:
Function long CopyFileA(String lpExistingFileName, String lpNewFileName, boolean bFailifExists) Library "kernel32"
Вот как я пытаюсь сделать это в Java:
public class Test {
static {
System.loadLibrary("D:\\test\\kernel32");
}
public static void main(String[] args) {
(new Test()).CopyFileA("D:\\test\\hi.txt", "D:\\other\\hi.txt", false);
}
public native long CopyFileA(String lpExistingFileName, String lpNewFileName, boolean bFailifExists);
}
Я получаю:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.CopyFileA(Ljava/lang/String;Ljava/lang/String;Z)J
Все руководства, которые я нашел, описывают примеры, когда вы пишете код на C, а затем создаете dll для себя. Итак, вы реализуете нативный метод с подписью из сгенерированного заголовочного файла.
Но здесь у нас уже есть dll.
Спасибо!