![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
интересует теория. возможно кто-то писал реализацию плагиной системы? подскажите что почитать по теме?
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
а что не ясно то? ну какая тут теория... динамически подключаемые библиотеки.
1. Создается список типов плагинов. 2. Для каждого типа плагина определяется его интерфейс, учитывая модель взаимодействия этого типа плагина с приложением. Может быть статический интерфейс (набор заранее определенных методов) или динамический, когда доступные методы определяет сам плагин и предоставляет их список через определенный экспортируемый метод. Приходилось писать приложение с плагинами в Qt, Delphi и bcb6 Добавлено через 3 минуты и 10 секунд ну соответственно, непосредственная проверка типа плагина, его интерфейса при подклюении |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
вот что нашел: http://www.codeproject.com/KB/library/dynobj.aspx
это понятно. и это понятно. после прочтенной статьи, непонятным остается вопрос предоставления плагину интерфейса плагинной системы. теоретически, догадываюсь, что так же, каждый плагин требует определенного для себя интерфейса со стороны сервера. как-то так... буду пробовать... -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: нет Всего: 12 |
при инициализации плагина, или по его запросу получаются требуемые коллбэки, конечно которые предусматриваются интерфейсом заранее |
|||
|
||||
SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 2 Всего: 23 |
Вот ещё посмотри, если не видел
|
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
Необязательно именно на dll-ках! Но, как правило юзают именно этот путь, как наиболее простой и понятный многим путь к построению расширяемой системы. К примеру, можно написать мини-линкер, компилить в obj-файлы и в памяти все связывать! Такие проекты есть и раньше были весьма в ходу! Также можно разработать свой формат исполнимых файлов и делать все по-своему, так довольно часто поступают протекторы и крипторы. Но! Для начала вполне можно остановиться на длл, делать так: 1) загрузить плагин 2) вынести инициализацию модуля в Инит функцию и вернуть контекст плагина 3) в SetPluginCtx , который задаст индивидуальность плагина 4) Учитывать и всегда! Что не смотря что плагины дают множетво удобств, они также потенциальная дыра в серьезном ПО !!! Пример? Создать троян и в DllMain кинуть код трояна, т.к. длл грузится, то DllMain все равно выполнится! ;) Это сообщение отредактировал(а) EvilsInterrupt - 11.2.2010, 11:37 |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
EvilsInterrupt, SenkraD, спасибо за информацию.
разбираюсь пока с http://www.codeproject.com/KB/library/dynobj.aspx -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |