Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов функции возвращающей строку, класс из dll посредством jna / 6 сообщений из 6, страница 1 из 1
20.08.2016, 17:29
    #39294977
ali_tash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции возвращающей строку, класс из dll посредством jna
Здравствуйте

public static interface wndInterfasor extends Library {
public String GetActiveWnd();
public String GetListWnd();
public int getTest(int Input);
}

wndInterfasor lib = (wndInterfasor) Native.loadLibrary("C:/Java/Proj/JavaSw/dll/WinMon.dll", wndInterfasor.class);

System.out.println(lib.GetActiveWnd()); // На этой строке программа зависает


Функция из dll которая возвращает значение integer - обрабатывается нормально.
А при выполнении функции которая из dll возвращает значение типа String - программа зависает, ошибки никакой не появляется. Сама функция из ддлки на виндовом приложении отрабатывается нормально, т.е. возникает проблема только при вызове её из java.
Но это как я понял - в java как-то по хитрому надо вызывать строковые функции - типа в char переделать ?

Ещё - можно ли вернуть из dll - массив строк ? или объект(экземпляр схожего класса - например TStringList - как в Delphi) ?

Спасибо.
...
Рейтинг: 0 / 0
21.08.2016, 03:30
    #39295054
ali_tash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции возвращающей строку, класс из dll посредством jna
Переделал функцию в DLL - чтобы она возвращала не String, а Pchar - заработало, но если функция возвращает строку на кириллице, то кирилица выходит с кракозябрами - ������.
Вопрос как сделать чтобы и килилица в java нормально выводилась ?

Вопрос про возвращение сложных типов - всё ещё актуален.
...
Рейтинг: 0 / 0
21.08.2016, 15:29
    #39295127
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции возвращающей строку, класс из dll посредством jna
Знаете, как скучно постоянно делать отсылки к документации?
Почитайте, что такое JNI , в каком виде ожидаются строки и всё такое.
...
Рейтинг: 0 / 0
21.08.2016, 15:43
    #39295130
ali_tash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции возвращающей строку, класс из dll посредством jna
Basil A. Sidorov,
Не JNI - JNA.

И можно поконкретней ?
Некоторое представление уже имею, но на свои вопросы ответа пока не нашёл.
...
Рейтинг: 0 / 0
21.08.2016, 16:34
    #39295138
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции возвращающей строку, класс из dll посредством jna
Да, пардон, не обратил на JN A .
Но всё равно вижу упорное нечтение документации .
Там и про однобайтовые кодировки строк и про WString .
Ну а для того, чтобы разбираться, что и где используется потребуется ещё и MSDN читать и документацию на конкретные библиотеки.
...
Рейтинг: 0 / 0
22.08.2016, 02:10
    #39295249
ali_tash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов функции возвращающей строку, класс из dll посредством jna
Basil A. Sidorov,

Спасибо, разобрался, в java принимал как WString, а в dll отправлял как PWideChar - заработало как надо.
Осталось только разобраться как отправлять и принимать классы, но мне в принципе нужен только список параметров, поэтому думаю можно обойтись массивом.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов функции возвращающей строку, класс из dll посредством jna / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]