Обратный вывод данных из DLL
Столкнулся с проблемой вывода данных из DLL. Есть файл с интерфейсом и вызовом функций (написан на делфи, думаю что DLL так же).
И так, вот есть нижеследующий код с примера на делфи:
{получить назначенное на счёт сообщение}
Function GetAccountMessage( Account: Integer; var Msg: PChar ): BOOL; stdcall;
И реализация моего кода на Java: (передаём номер аккаунта, должны получить строку обратно)
CscLink INSTANCE = (CscLink) Native.loadLibrary("csclink", CscLink.class, W32APIOptions.ASCII_OPTIONS);
boolean GetAccountMessage(int Account, StringByReference Msg);
Далее вызываю в main
StringByReference getAccMsg = new StringByReference();
myLib.GetAccountMessage(getAccNumb.getValue(), getAccMsg);
System.out.println("Сообщение: " + getAccMsg.getValue());
После чего приходит следующий ответ:
4Днk/inPЁХ a
Так же хочу подметить, что вариации этого ответа прилетают всегда разные, но всегда спереди указано 4Д
Пробовал использовать указатели и прочие.
Класс StringByReference реализует перевод поинтера сразу в строку.
Источник: Stack Overflow на русском