|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|||||||||||
Вызов структуры из импортированной DLL28.05.2017, 19:47. Показов 3811. Ответов 21
Метки нет (Все метки)
Есть DLL:
0
|
|||||||||||
| 28.05.2017, 19:47 | |
|
Ответы с готовыми решениями:
21
Создание dll на C++ и вызов метода dll из C#. |
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
|
|||||||||||
| 28.05.2017, 20:11 | |||||||||||
1
|
|||||||||||
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|
| 28.05.2017, 20:14 [ТС] | |
|
Добавил еще public структуре, получаю в ответ: "Сигнатура типа метода не совместима с PInvoke."
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
|
||
| 28.05.2017, 21:09 | ||
|
1
|
||
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|
| 29.05.2017, 09:45 [ТС] | |
|
При IntPtr ошибка - "ошибка чтения защищенной памяти". Судя по ответам в Гугле, проблема именно в виде структуры.
Вот самый близкий ответ, но на Java: http://www.sql.ru/forum/125271... cii-iz-dll Буду благодарен, если кто-то поможет разобраться.
0
|
|
|
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
|
||||||
| 29.05.2017, 09:49 | ||||||
|
pistol88, вы уверены в этом:
Может функция всё-таки возвращает указатель? Как данная функция используется в неуправляемом коде? Можете её вызвать из простого приложения на Си\С++ и убедиться, что всё так, как вы думаете?
1
|
||||||
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|
| 29.05.2017, 10:02 [ТС] | |
|
Файл .h шел вместе с бибиотекой. Однако, если гуглить, - все плюются на разработчиков этой DLL - в документации одно, в примерах другое, по факту вообще третье. Разработка ведется только методом тыка.
Попробую поиграться с Си\С++, спасибо за совет.
0
|
|
|
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
|
|
| 29.05.2017, 10:07 | |
|
pistol88, по этой ссылке есть пример использования данной либы. Посмотрите, может оно поможет чем.
1
|
|
|
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
|
||
| 29.05.2017, 13:49 | ||
|
cdecl соглашение, а не stdcall
Добавлено через 2 минуты
1
|
||
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|||
| 29.05.2017, 17:37 [ТС] | |||
|
Я со своим уровнем пока не понимаю, что за "грязь" происходит в структуре на Java: http://www.sql.ru/forum/actual... g=20281795
0
|
|||
|
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
|
|
| 29.05.2017, 17:53 | |
|
pistol88, вызовите уже этот метод из кода на Си, да станет ясно что там да как.
0
|
|
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
||
| 29.05.2017, 18:02 [ТС] | ||
Постепенно занимаюсь этим.
0
|
||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
|
|||||||
| 29.05.2017, 18:52 | |||||||
|
Декомпилятор вообще показывает вот такую сигнатуру функции
0
|
|||||||
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|||||||
| 29.05.2017, 19:00 [ТС] | |||||||
0
|
|||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
|
||||||||||||||||
| 29.05.2017, 19:03 | ||||||||||||||||
|
Ну как минимум CallingConvention не верный был, там везде Cdecl...
Например декомпиляция libOpenDocument
0
|
||||||||||||||||
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
||
| 29.05.2017, 19:04 [ТС] | ||
|
0
|
||
|
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
|
|
| 29.05.2017, 19:04 | |
|
pistol88, есть предположение, что libOpenDocument возврящает некий handler, указывающий на некий буфер в памяти. Этот handler нужно передать в libCloseDocument. Сообщение об ошибке недвусмысленно намекает, что функция libCloseDocument попыталась что-то откуда-то прочитать (явно полученный аргумент трактовался как указатель на что-то).
Рекомендую почитать документацию на всё это.
0
|
|
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
||||||||||
| 29.05.2017, 19:14 [ТС] | ||||||||||
0
|
||||||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
|
||
| 29.05.2017, 19:15 | ||
Сообщение было отмечено pistol88 как решение
Решение
Кстати, я возможно не прав насчет Cdecl, т.к. на версии piritlib.dll 1.0.5.0 был Cdecl, а на версии 1.0.9.744 уже Stdcall, они там реально наркоманы какие-то... Меняют API как перчатки...
И сами функции изменились немного... Добавлено через 1 минуту
1
|
||
|
14308 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,410
|
||
| 29.05.2017, 19:16 | ||
|
0
|
||
| 29.05.2017, 19:16 | |
|
Помогаю со студенческими работами здесь
20
Вызов функции из dll Вызов кода из dll Вызов метода из dll Вызов из c# метода в Dll с++ Вызов функции из DLL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|