Передать параметр функции Delphi dll pchar из Java JNA - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть файл .dll.Файл Dll разработан на языке Delphi.Есть метод getKeyPadStatus.В этом методе есть четыре параметра.Вот функция:

функция GetKeyPadStatus (var addr: byte; var pstatus, pnumber: pchar; var ptocounter: byte): логический; stdcall;

Теперь я хочу вызвать эту функцию из Java с использованием JNA.Вот мой код Java:

public class TestKeyPad {

static boolean flag = false;
public interface NativeExample extends Library {

    public boolean initPort(byte port);
    public boolean ScanKeyPad(byte addr, int waithum);
    public boolean getKeyPadStatus(byte addr, String pstatus, String pnumber, byte ptocounter);

}

public static void main(String[] args) {
    NativeExample nativeExample = (NativeExample) Native.loadLibrary("KeyPad", NativeExample.class);

    flag = nativeExample.initPort((byte)1);
    System.out.println("Init value : " + flag);

    flag = nativeExample.ScanKeyPad((byte)5, 2);
    System.out.println("Scan value : " + flag);

    flag = nativeExample.getKeyPadStatus((byte)5,  "L",  "0", (byte)5);
    System.out.println("pstatus value : " + flag);
}
}

Но я получаю ошибку. Я обнаружил ошибку:

Init value : true
Scan value : true
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking   up function 'getKeyPadStatus': The specified procedure could not be found.

at com.sun.jna.Function.<init>(Function.java:245)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:566)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:542)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:528)
at com.sun.jna.Library$Handler.invoke(Library.java:228)
at com.sun.proxy.$Proxy0.getKeyPadStatus(Unknown Source)
at call_dll.TestKeyPad.main(TestKeyPad.java:38)

Итак, как я могу отправить значение pchar из Java в функцию Delphi?Будет здорово, если я получу это решение.

1 Ответ

0 голосов
/ 11 апреля 2019

Имя моего метода было неверным. Это будет "GetKeyPadstatus".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...