Приложение с плагинами... как?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Приложение с плагинами... как?

Сообщение anzo » 21.11.2009 16:38:44

Уважаемые форумяне есть ли методика создания кроссплатформенных приложений на Lazarus с применением плагинов?
Если есть подскажите путь, что и где почитать по теме.
anzo
новенький
 
Сообщения: 28
Зарегистрирован: 09.07.2009 10:53:46

Re: Приложение с плагинами... как?

Сообщение FedeX » 21.11.2009 16:47:03

Да в принципе методика ничем не отличаеться от некроссплатформенной. Аналог Windows dll есть под любой поддерживаемой Лазарус системой. В SDK для плагинописателей надо лишь указать необходимый перечень функций/интерфейсов которые должен экспортировать плагин и указать где плагин должен находиться/регистрироваться, всё зависит от Вашей фантазии. При запуске Ваша программа просматривает список зарегистрированных плагинов (или специальный каталог, где должны находиться плагины), загружает их, и использует предопределённые функции из них..
Ещё можно сделать систему плагинов на основе какого-нибудь скриптового языка (см. Pascal Script, Python, LUA).
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Приложение с плагинами... как?

Сообщение anzo » 21.11.2009 16:57:41

ОК. А как на счет визуальных плагинов, которые загружаются во фрейм, и содержат различные контролы типа DBGrid и тому подобное. У меня по этой теме опыта немного. На ум только приходит способ через ActiveX. А можно ли подобное сделать через dll/so?
anzo
новенький
 
Сообщения: 28
Зарегистрирован: 09.07.2009 10:53:46

Re: Приложение с плагинами... как?

Сообщение FedeX » 21.11.2009 18:35:57

кроссплатформенно неа.. если и можно то крайне не желательно, стабильность такого будет сложно гарантировать.
Лучше сделать для плагинов какой-нибудь невизуальный АПИ для доступа и создания в основном приложении этих самых гридов и проч. контролов, если они так нужны. Муторно, но гораздо надёжней, а если кроссплатформенно, то возможно это и есть единственный выход..
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Приложение с плагинами... как?

Сообщение alek111 » 01.12.2009 19:17:49

FedeX писал(а):При запуске Ваша программа просматривает список зарегистрированных плагинов (или специальный каталог, где должны находиться плагины), загружает их, и использует предопределённые функции из них..
А вот с этого места, если можно, поподробнее. Как просмотреть каталог понятно, а вот как кроссплатформенно загрузить плагины и использовать функции, совершенно непонятно. Хотябы подскажите в какую сторону копать (документацию на какие библиотеки/модули/функции курить)?
Аватара пользователя
alek111
новенький
 
Сообщения: 20
Зарегистрирован: 20.06.2006 16:17:50

Re: Приложение с плагинами... как?

Сообщение скалогрыз » 01.12.2009 19:47:49

I.
есть хороший модуль: dynlibs (его использует opengl для загрузки основных и расширенных функций)
http://www.freepascal.org/docs-html/rtl ... index.html

dynlibs это кроссплатформенный модуль для загрузки системных библиотек. Используя его можно написать кроссплатформенный код для загрузки плагинов на базе .dll (для Windows), .so (для Linux) и .dylib (для MacOSX)

3 элементарных функции (схожих с WinAPI)
Код: Выделить всё
Function LoadLibrary(Name : AnsiString) : TLibHandle;
Function GetProcedureAddress(Lib : TlibHandle; ProcName : AnsiString) : Pointer;
Function UnloadLibrary(Lib : TLibHandle) : Boolean;

загрузить библиотеку, получить адрес функции по имени, выгрузить библиотеку.

Конечно, все люди грамотные, и понимают, что на linux-е .dll с помощью этих функций не подгрузить (так же как и .so на Windows). Ибо это простые dynlibs это лишь удобная обёртка вокруг системных функций.

P.S. упомянутый OpenGL это отличный пример кроссплатформенной библиотеки, которая использует кроссплатформенную систему плагинов на базе не кроссплатформенный системных библиотек :)
Захотела NVidia выпустить расширение для очередной карточки: старается выпускает версии для Win, Linux и MacOSX.

II.
для совершенной кроссплатформенности можно подумать над использованием PascalScript.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru
cron