| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > плагины. теория. |
| Автор: andrew_121 10.2.2010, 07:11 |
| интересует теория. возможно кто-то писал реализацию плагиной системы? подскажите что почитать по теме? |
| Автор: NewDima 10.2.2010, 11:26 |
| а что не ясно то? ну какая тут теория... динамически подключаемые библиотеки. 1. Создается список типов плагинов. 2. Для каждого типа плагина определяется его интерфейс, учитывая модель взаимодействия этого типа плагина с приложением. Может быть статический интерфейс (набор заранее определенных методов) или динамический, когда доступные методы определяет сам плагин и предоставляет их список через определенный экспортируемый метод. Приходилось писать приложение с плагинами в Qt, Delphi и bcb6 Добавлено через 3 минуты и 10 секунд ну соответственно, непосредственная проверка типа плагина, его интерфейса при подклюении |
| Автор: NewDima 10.2.2010, 14:54 | ||
при инициализации плагина, или по его запросу получаются требуемые коллбэки, конечно которые предусматриваются интерфейсом заранее |
| Автор: SenkraD 10.2.2010, 15:16 |
| http://www.cyberguru.ru/programming/visual-cpp/application-with-plugins.html ещё посмотри, если не видел |
| Автор: EvilsInterrupt 11.2.2010, 11:37 | ||
Необязательно именно на dll-ках! Но, как правило юзают именно этот путь, как наиболее простой и понятный многим путь к построению расширяемой системы. К примеру, можно написать мини-линкер, компилить в obj-файлы и в памяти все связывать! Такие проекты есть и раньше были весьма в ходу! Также можно разработать свой формат исполнимых файлов и делать все по-своему, так довольно часто поступают протекторы и крипторы. Но! Для начала вполне можно остановиться на длл, делать так: 1) загрузить плагин 2) вынести инициализацию модуля в Инит функцию и вернуть контекст плагина 3) в SetPluginCtx , который задаст индивидуальность плагина 4) Учитывать и всегда! Что не смотря что плагины дают множетво удобств, они также потенциальная дыра в серьезном ПО !!! Пример? Создать троян и в DllMain кинуть код трояна, т.к. длл грузится, то DllMain все равно выполнится! ;) |
| Автор: andrew_121 11.2.2010, 14:43 |
| EvilsInterrupt, SenkraD, спасибо за информацию. разбираюсь пока с http://www.codeproject.com/KB/library/dynobj.aspx |