|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
|||||||||||
Вызов функций, возвращающих указатель на структуру, из нативной dll09.11.2016, 08:53. Показов 5209. Ответов 33
Метки нет (Все метки)
Тут на форуме уже не раз задавали вопросы, как вызвать функцию из нативной dll. И в случае, если функция возвращает "нормальный" тип, у меня с этим вопросов нет: DllImport и всё такое. Но вот если функция возвращает указатель на интерфейс, вот тут у меня возникли проблемы.
Имеется dll-ка (написана, кажется, на CBuilder), экспортирующая всего 2 функции. Так же имеются примеры работы с этой dll-кой в Delphi и в С++. На Delphi это выглядит так: Rtusbapi.pas
0
|
|||||||||||
| 09.11.2016, 08:53 | |
|
Ответы с готовыми решениями:
33
|
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
|||||||||||||||||||||
| 09.11.2016, 08:54 [ТС] | |||||||||||||||||||||
|
Теперь пытаюсь реализовать всё это на C#
Rtusbapi.cs
Program.cs
Проект, примеры, dll и врапперы для неё под Delphi и С++ тут https://drive.google.com/open?... jEtNjBucEk
0
|
|||||||||||||||||||||
|
20 / 1 / 0
Регистрация: 08.12.2015
Сообщений: 5
|
||||||
| 09.11.2016, 15:34 | ||||||
|
Нет возможности проверить, но попробуй примерно так:
0
|
||||||
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
||||||||
| 09.11.2016, 15:54 [ТС] | ||||||||
но спасибо, попробую Добавлено через 12 минут Попробовал.
0
|
||||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
||||||
| 09.11.2016, 17:31 | ||||||
Сообщение было отмечено Selya как решение
Решение
Тут посмотрите http://stackoverflow.com/quest... n-pointers
Похоже что там получается что-то типа этого
1
|
||||||
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
|
| 10.11.2016, 09:39 [ТС] | |
|
Честно говоря, ещё больше запутался
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 10.11.2016, 17:19 | |
|
Помоему там все предельно понятно, в С++ в начале структуры/класса, содержащих виртуальные функции всегда находится указатель на таблицу виртуальных функций, сама таблица это просто адреса функций. После указателя на таблицу виртуальных функций идут поля структуры/класса если таковые имеются. Вы хоть пробовали то код запустить и посмотреть как он работает?
0
|
|
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
|
| 11.11.2016, 09:13 [ТС] | |
|
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 11.11.2016, 15:31 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
|||||||||||
| 14.11.2016, 09:36 [ТС] | |||||||||||
|
Someone007, огромное спасибо за желание помочь. Вторую неделю бьюсь, но всё равно не очень понятно.
Ну хорошо, давайте попробуем от простого к сложному. Фрагмент кода из Rtusbapi.h С++
0
|
|||||||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 14.11.2016, 14:33 | |
|
В 5 посте рабочий код, осталось туда добавить недостающие 6 из 8 функций (GetModuleHandle и т.д.)...
0
|
|
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
||||||
| 14.11.2016, 14:43 [ТС] | ||||||
|
Тогда меня смущает
И ещё смотрю ссылку, что в 5м посте, как-то не очень соотносится, с тем что вы предлагаете.
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
||||||||
| 14.11.2016, 15:38 | ||||||||
0
|
||||||||
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
|
| 16.11.2016, 13:27 [ТС] | |
|
В 5м посте код не рабочий.
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 16.11.2016, 16:16 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
|||||||
| 16.11.2016, 19:41 [ТС] | |||||||
0
|
|||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 16.11.2016, 20:05 | |
|
Эта ошибка невозможна в коде из 5 поста... Вы там что-то изменили...
Добавлено через 5 минут Судя по ошибке вы добавили делегаты не в ту структуру...
0
|
|
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
|||||||||||
| 17.11.2016, 08:54 [ТС] | |||||||||||
|
Да, изменил. Сделал так:
Rtusbapi.cs
0
|
|||||||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 17.11.2016, 15:50 | |
|
Полностью отсутствует указатель на таблицу виртуальных функций. Еще раз внимательно изучите 5 пост, там 2 структуры не просто потому что я так захотел.
0
|
|
|
1 / 1 / 0
Регистрация: 04.09.2014
Сообщений: 21
|
||||||||||||
| 18.11.2016, 09:55 [ТС] | ||||||||||||
|
Ок, переделал. Сделал в точности как советовал товарищ Sam Harwell из ссылки в 5м посте, через interface. Чтобы вызывалось вот так:
0
|
||||||||||||
| 18.11.2016, 09:55 | |
|
Помогаю со студенческими работами здесь
20
Подключение нативной dll к проекту Вызов функций из DLL, написанной на CBuilder. Вызов из Python функций сторонней DLL
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|