|
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 4
|
|||||||||||
Не получается получить данные из динамической библиотеки, написанной на FASM...20.08.2017, 18:47. Показов 4396. Ответов 7
Метки нет (Все метки)
Здравствуйте.
Не получается получить данные из Java, в dll написанной FASMом, изменить что-нибудь и отправить обратно в Java. Использовал пример: C-Java ( outofrange.ru/2015/02/jni-tutorial/ ) Код Java:
0
|
|||||||||||
| 20.08.2017, 18:47 | |
|
Ответы с готовыми решениями:
7
Не получается вызвать функцию из простейшей библиотеки, написанной на C++ Вызов функции одной динамической библиотеки из другой динамической библиотеки
|
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
| 21.08.2017, 12:24 | |
|
Что значит "не получается"? Как выглядит это "не получается"?
Ещё знать бы как Java передаёт параметры... Добавлено через 10 минут И каков формат массива? Скорее всего это не просто список элементов (тогда иначе где брать размер массива?) Как возвращается результат, если это массива? И т.д. Т.е. нужно ковыряться в этом всём.
0
|
|
|
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 4
|
|
| 21.08.2017, 13:23 [ТС] | |
|
После вызова двух JNI (Java Native Interface) функций: GetIntArrayElement ( возвращает тело примитивного массива. У меня в JavaMas) и GetArrayLength (конвертирует массив и возвращает количество элементов. У меня в переменной LengthMas). Вроде посредством двух переменных с адресом массива и его размера, можно работать с полученным массивом. В переменной LengthMas лежит тройка (три элемента массива), все вроде правильно, но в переменной JavaMas нету первого элемента 123, который я передавал из явы
но вроде должен быть, и нуля тоже нету (ошибка). Вот, ни получается, получить или использовать эти переменные с указателем на массив и его размером. Ява передаёт параметры через стек. Первый это указатель на массив Jni параметров "JNIenv". Второй на какой-то объект. Третий на массив Java который на прямую прочитать нельзя, нужно использовать JNI функции из явы. Я их и использую, но первый элемент массива не вижу, да и другие тоже. Массив выглядит так: 123, 234, 345 (dword). Размер массива получает JNI функция "GetArrayLength" (3). Результат работы функции GetIntArrayElement в регистре eax (указатель на элементы полученного массива)
0
|
|
|
4189 / 1837 / 220
Регистрация: 06.10.2010
Сообщений: 4,124
|
|
| 07.09.2017, 12:47 | |
|
9900
Посмотрел мельком. Вроде бы для вызова функций Java в FASM нужно использовать макросы interface и cominvk. Почитаю про Java - отпишусь.
0
|
|
|
4189 / 1837 / 220
Регистрация: 06.10.2010
Сообщений: 4,124
|
|||||||||||
| 07.09.2017, 16:43 | |||||||||||
Сообщение было отмечено ФедосеевПавел как решение
Решение
Ты не правильно обращаешься к массиву
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 4
|
|
| 07.09.2017, 20:51 [ТС] | |
|
Привет murderer.
Изменил обращение к полученному массиву, и проверка сообщила о найденных данных! Макросы в начале кода рабочие. Спасибо за помощь! Но вот обратно этот массив отправить в Java не удаётся, посредством вызова трёх последних JNI функций, после проверки. Java пишет: Exception in thread "main" java.long.NullPointerException at HelloJNI.sumAndAverage(Native Method) at HelloJNI.main(HelloJNI.java:12) Может параметры неправильные ввожу?
0
|
|
|
4189 / 1837 / 220
Регистрация: 06.10.2010
Сообщений: 4,124
|
|||||||
| 08.09.2017, 09:45 | |||||||
Сообщение было отмечено ФедосеевПавел как решение
Решение
Добавлено через 8 минут Насчёт ошибки - похоже ты вначале вызываешь ReleaseIntArrayElements, а затем обращаешься к этому уже недействительному указателю через SetIntArrayRegion и Java вполне правомерно выдаёт exception. Добавлено через 53 минуты Нужно возвращать указатель на созданый массив через регистр eax.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 4
|
|
| 08.09.2017, 14:55 [ТС] | |
|
Взял пример из архива, списал вызовы JNI функций (указанные выше), и все заработало!
Большое спасибо murderer! Ответ получен!
0
|
|
| 08.09.2017, 14:55 | |
|
Помогаю со студенческими работами здесь
8
Использование библиотеки, написанной на Delphi Использование библиотеки, написанной на ассемблере Почему не получается получить данные из БД? Не получается получить данные из массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|