![]() |
|
![]() ![]() ![]() |
|
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Предлагаю собрать в этом топике информацию по теме создания плагинистого приложения.
Нужны ссылки на статьи, туториалы, примеры, архивы с исходниками либо SVN|GIT|HG|иТД репозитории с готовыми проектами. При выкладывании ссылки пишите краткий комментарий: название материалла; автор; языки программирования примеров; что описано в материале. Тема будет полезна для многих программеров среднего уровня. Добавлено @ 17:52 Статья: Создание простого приложения с плагинами. Автор: Покрашенко Александр Язык: c++ Комментарий: Описывается как создать плагинистое приложение на любом С++. Использован подход "голые DLL" Это сообщение отредактировал(а) ZVano - 26.5.2011, 11:35 -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
ZVano, тема полезная, но предлагаю расширить её - приводить примеры не только для Builder'а, а для любых систем.
если же оставить только Builder, то фразу предлагаю переделать: ... для самых начинающих программеров самого низкого уровня. Всё-таки Builder - не профессиональная система (обрати внимание, не Delphi или VCL, а именно Builder). Если согласен с расширением, то вот примерчик -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Согласен. Только нужно к ссылке писать для какой системы приведен пример и является ли он спецефичным для этой системы (напр. чистые BPL в Delphi) Шапку подправил. Добавлено @ 11:51 Название: "Создаём систему плагинов" Автор: Александр Алексеев Язык программирования: Object Pascal URL: Часть 1 - Обзор подходов. Выбор подхода. Часть 2 - В предыдущий раз мы рассмотрели несколько возможных вариантов для системы плагинов. Самое время заняться реализацией. Часть 3 - Прежде чем переходить к реализации нашей функции _Init, пощупаем сначала эти "пакеты в виде DLL". Часть 4 - В прошлый раз мы немного пощупали "пакеты в виде DLL" и реализовали недостающие части функций инициализации в таком плагине. Часть 5 - Самое время поговорить о серверной части. А начнём мы с загрузки плагинов. Часть 6 - Настало время обсудить наш интерфейс IInit. Как вы помните, ранее мы не говорили, что это такое - пока мы считали это "неким классом", у которого есть методы Init и Done. Часть 7 - При декларации интерфейса IInit мы описали его методы как safecall вместо ожидаемого stdcall. Часть 8 - В последний раз мы полностью закончили рассмотрение загрузки плагинов. Теперь поговорим о самом вкусном - о функциональности плагинов. Часть 9 - Прежде, чем приступать к написанию кода, хотелось бы сказать несколько слов о важных моментах, касающихся разработки плагинов, которые остались за бортом. Описание: Цикл статей в котором рассматриваются различные подходы создания плагинистых приложений в IDE Delphi. Автор выбрал подход "BPL, как DLL" и в дальнейшем реализовывает его. Это сообщение отредактировал(а) ZVano - 26.5.2011, 12:17 -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Пример отсутствует на указаном ресурсе :( -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
ууупс. Яндекс удалил. Вот. скопировал сюда
Присоединённый файл ( Кол-во скачиваний: 10 ) ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
borisbn, а можно поподробнее о каркасе "Mosaic"?
Что за зверь, чьих рук творение, привязан ли жестко к QT? -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
этот проект делали три человека на нашей фирме: один программист и два архитектора ( я в том числе ). Делали пару лет ( сначала на дебилдере, потом на Qt ). Т.к. это коллективный труд, то исходники выложить не могу. К QuickTime'у - нет, а к Qt - да ![]() На самом деле привязан только основной движок. Модули же (плагины) привязываются только если они собираются инсталлировать свой widget в систему (тут никуда не денешься). А если модуль просто обрабатывает данные, генерит их, читает/пишет файлы, общается по сети - то нет, не привязан. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Это правильно. На первый взгляд архитектура хорошо продумана. Но маленьким я бы каркас не назвал ![]() -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Название: "Плагины на основе COM интерфейсов"
Автор: Роман Лут (программист графического движка и дизайнер уровней 3D шутера Venom) Язык программирования: Object Pascal, VC++, Borland С++ Builder, Managed C++, C# URL: 1я страница Исходники Описание: Описывается принцип создания плагинистого приложения на базе COM интерфейсов. Вроде, принцип применим для любых средсв разработки, которые могут работать с dll. Статья тежелая для понимания. Это сообщение отредактировал(а) ZVano - 7.6.2011, 11:37 -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
в линуксе практикуют два способа при загрузке подключаемых модулей:
1) после загрузки динамического модуля, производится попытка разрешить (resolve) символы интерфесы, затем в случае успеха, производится вызов интерфейса, с целью получения информации о модуле, и его дальнейшей регистрации в ядре 2) после загрузки динамического модуля автоматически выполняется специальная функция в модуле (конструктор). При этом модуль получает доступ к списку модулей в ядре. Конструктор сам регистрирует себя. второй способ мне кажется более предпочтительным, т.к. он более удобен. в виндоуз реализован только первый способ (или я плохо информирован). p.s. могу выложить исходники блокнота с плагинами (windows), если кому интересно.. -------------------- undefined |
|||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Конечно интересно. Выкладывай. -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
не могу залить исходник сюда (ограничение размера)
исходник лежит здесь: 'http://79.120.100.108/db-Editor v1.0.0.34 src alpha.rar' написано все это в Borland Developer Studio 2006, C++ Builder тестовый плагин лежит в папке plugin с удовольствием отвечу на вопросы -------------------- undefined |
|||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Удалил временные файлы и перезалил. Спасибо за пример. С исходниками пока не разбирался. Выглядит симпатично. Сразу заметил решение ряда интересующих меня вопросов. Это сообщение отредактировал(а) ZVano - 14.6.2011, 20:12 Присоединённый файл ( Кол-во скачиваний: 17 ) ![]() -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
fish9370 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
прошу прощения, в файле Unit2.cpp, в строке 1482, после
пропущена строка
пожалуйста, добавьте -------------------- undefined |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |