Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Экспорт/импорт классов из dll / 13 сообщений из 13, страница 1 из 1
11.11.2018, 23:09
    #39731491
Экспорт/импорт классов из dll
Здравствуйте, читаю документацию, никак не найду, как в Delphi описать экспорт/импорт классов, реализованных в dll.

Предполагаю, что должно быть нечто вроде такого: https://msdn.microsoft.com/ru-ru/library/81h27t8c.aspx - да вот сам не найду никак.

Подскажите, что и где почитать по этому поводу.
Спасибо.
...
Рейтинг: 0 / 0
12.11.2018, 00:00
    #39731495
Гирлионайльдо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Не надо благодарности


21384601
...
Рейтинг: 0 / 0
12.11.2018, 00:02
    #39731496
Гирлионайльдо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Вот фикс, что бы утечек не было
...
Рейтинг: 0 / 0
12.11.2018, 10:18
    #39731565
ziv-2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Используй интерфейсы - на любом языке, которые поддерживают интерфейсы (с++, си#, vb.net) сможешь их вызывать.
...
Рейтинг: 0 / 0
12.11.2018, 10:28
    #39731572
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Курение вредит вашему здоровью,

А у тебя какая конкретно задача? А то есть еще и другие способы.
...
Рейтинг: 0 / 0
12.11.2018, 11:06
    #39731594
stanilar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Курение вредит вашему здоровьюПредполагаю

Экспорт/импорт откуда и куда? Если неизвестно ни то, ни другой - то только COM объекты. Иначе - только внутренняя документация продукта, что не всегда эквивалентно msdn.
...
Рейтинг: 0 / 0
12.11.2018, 13:18
    #39731699
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Если DLL используется только в сочетании в Вашим EXE-файл и оба файла скомпилированы в одной версии Delphi, то вместо интерфейсов проще реализовать на обычных классах. Допустим, если в DLL планируется реализация Вашего класса, то можно объявить методы как virtual, а в EXE объявить аналогичный абстрактный класс с теми же методами, но virtual; abstract. В DLL предусмотреть экспортную функцию, которая будет создавать объект Вашего класса.
Тут важно будет следить, чтобы методы и в DLL и в EXE оставались в одинаковой последовательности.

Пример:
Код: pascal
1.
2.
3.
4.
pay: TAbstractReader;
pay := CreateReaderFromDll();
pay.DoWork();
pay.Free;


Уничтожать объект допускается из EXE, поскольку деструктор является виртуальным (вызовется код, который в DLL).
...
Рейтинг: 0 / 0
12.11.2018, 13:48
    #39731722
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
DmSer,

А если класс в DLL сделать наследником того базового абстрактного класса из EXE, то можно и не беспокоиться о последовательности методов. Но если методы в свою очередь будут принимать/возвращать динамические объекты типа строк, то дополнительно нужно юзать ShareMem (SimpleShareMem) с обеих сторон.
...
Рейтинг: 0 / 0
12.11.2018, 14:15
    #39731752
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Vlad FА если класс в DLL сделать наследником того базового абстрактного класса из EXE, то можно и не беспокоиться о последовательности методов. Но если методы в свою очередь будут принимать/возвращать динамические объекты типа строк, то дополнительно нужно юзать ShareMem (SimpleShareMem) с обеих сторон.
А можно не заморачиваться со всеми этими ограничениями, и делать плугины с обычными функциями с доп параметром "ObjHandle: Pointer", который и является адресом на объект, сознанный в dll же.

И по поводу ShareMem и других способов заставить dll и exe использовать общий менеджер памяти.
От этого становится очень нехорошо, когда в каждой dll стартуют какие-то потоки и они что-то делают.
В итоге - получаем кучу ожиданий блокировок при работе с памятью.
А когда у каждой dll МП свой - такой проблемы нет.
...
Рейтинг: 0 / 0
12.11.2018, 18:06
    #39731979
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
ziv-2014Используй интерфейсы - на любом языке, которые поддерживают интерфейсы (с++, си#, vb.net) сможешь их вызывать.
С++ интерфейсы не поддерживает.
...
Рейтинг: 0 / 0
12.11.2018, 20:00
    #39732038
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Фэйтл Эра,

YouTube Video
...
Рейтинг: 0 / 0
12.11.2018, 20:51
    #39732048
Гирлионайльдо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Фэйтл Эра,

Это же COM
...
Рейтинг: 0 / 0
13.11.2018, 09:26
    #39732175
ziv-2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт/импорт классов из dll
Фэйтл Эраziv-2014Используй интерфейсы - на любом языке, которые поддерживают интерфейсы (с++, си#, vb.net) сможешь их вызывать.
С++ интерфейсы не поддерживает.
Поддерживают.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Экспорт/импорт классов из dll / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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