| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Приложение с плагинами на C++ Builder |
| Автор: ZVano 25.5.2011, 17:48 |
| Предлагаю собрать в этом топике информацию по теме создания плагинистого приложения. Нужны ссылки на статьи, туториалы, примеры, архивы с исходниками либо SVN|GIT|HG|иТД репозитории с готовыми проектами. При выкладывании ссылки пишите краткий комментарий: название материалла; автор; языки программирования примеров; что описано в материале. Тема будет полезна для многих программеров среднего уровня. Добавлено @ 17:52 Статья: http://www.codenet.ru/progr/visualc/plug.php Автор: Покрашенко Александр Язык: c++ Комментарий: Описывается как создать плагинистое приложение на любом С++. Использован подход "голые DLL" |
| Автор: borisbn 26.5.2011, 10:41 |
| ZVano, тема полезная, но предлагаю расширить её - приводить примеры не только для Builder'а, а для любых систем. если же оставить только Builder, то фразу предлагаю переделать: ... для самых начинающих программеров самого низкого уровня. Всё-таки Builder - не профессиональная система (обрати внимание, не Delphi или VCL, а именно Builder). Если согласен с расширением, то http://forum.vingrad.ru/index.php?showtopic=313032&view=findpost&p=2234028 |
| Автор: ZVano 26.5.2011, 11:40 |
Согласен. Только нужно к ссылке писать для какой системы приведен пример и является ли он спецефичным для этой системы (напр. чистые BPL в Delphi) Шапку подправил. Добавлено @ 11:51 Название: "Создаём систему плагинов" Автор: Александр Алексеев Язык программирования: Object Pascal URL: http://www.gunsmoker.ru/2008/12/1.html - Обзор подходов. Выбор подхода. http://www.gunsmoker.ru/2008/12/2.html - В предыдущий раз мы рассмотрели несколько возможных вариантов для системы плагинов. Самое время заняться реализацией. http://www.gunsmoker.ru/2008/12/3.html - Прежде чем переходить к реализации нашей функции _Init, пощупаем сначала эти "пакеты в виде DLL". http://www.gunsmoker.ru/2008/12/4.html - В прошлый раз мы немного пощупали "пакеты в виде DLL" и реализовали недостающие части функций инициализации в таком плагине. http://www.gunsmoker.ru/2008/12/5.html - Самое время поговорить о серверной части. А начнём мы с загрузки плагинов. http://hhttp://www.gunsmoker.ru/2008/12/6.html - Настало время обсудить наш интерфейс IInit. Как вы помните, ранее мы не говорили, что это такое - пока мы считали это "неким классом", у которого есть методы Init и Done. http://www.gunsmoker.ru/2008/12/7.html - При декларации интерфейса IInit мы описали его методы как safecall вместо ожидаемого stdcall. http://www.gunsmoker.ru/2008/12/8.html - В последний раз мы полностью закончили рассмотрение загрузки плагинов. Теперь поговорим о самом вкусном - о функциональности плагинов. http://www.gunsmoker.ru/2009/01/9.html - Прежде, чем приступать к написанию кода, хотелось бы сказать несколько слов о важных моментах, касающихся разработки плагинов, которые остались за бортом. Описание: Цикл статей в котором рассматриваются различные подходы создания плагинистых приложений в IDE Delphi. Автор выбрал подход "BPL, как DLL" и в дальнейшем реализовывает его. |
| Автор: ZVano 26.5.2011, 13:04 |
Пример отсутствует на указаном ресурсе :( |
| Автор: borisbn 26.5.2011, 13:16 |
| ууупс. Яндекс удалил. Вот. скопировал сюда |
| Автор: borisbn 26.5.2011, 13:17 |
| а вот пример использования |
| Автор: ZVano 26.5.2011, 16:32 |
| borisbn, а можно поподробнее о каркасе "Mosaic"? Что за зверь, чьих рук творение, привязан ли жестко к QT? |
| Автор: borisbn 26.5.2011, 16:43 |
этот проект делали три человека на нашей фирме: один программист и два архитектора ( я в том числе ). Делали пару лет ( сначала на дебилдере, потом на Qt ). Т.к. это коллективный труд, то исходники выложить не могу. К QuickTime'у - нет, а к Qt - да На самом деле привязан только основной движок. Модули же (плагины) привязываются только если они собираются инсталлировать свой widget в систему (тут никуда не денешься). А если модуль просто обрабатывает данные, генерит их, читает/пишет файлы, общается по сети - то нет, не привязан. |
| Автор: ZVano 26.5.2011, 17:19 |
Это правильно. На первый взгляд архитектура хорошо продумана. Но маленьким я бы каркас не назвал |
| Автор: ZVano 7.6.2011, 11:19 |
| Название: "Плагины на основе COM интерфейсов" Автор: Роман Лут (программист графического движка и дизайнер уровней 3D шутера Venom) Язык программирования: Object Pascal, VC++, Borland С++ Builder, Managed C++, C# URL: http://www.dtf.ru/articles/read.php?id=44995 http://www.deep-shadows.com/hax/downloads/cominterface.rar Описание: Описывается принцип создания плагинистого приложения на базе COM интерфейсов. Вроде, принцип применим для любых средсв разработки, которые могут работать с dll. Статья тежелая для понимания. |
| Автор: fish9370 13.6.2011, 23:18 |
| в линуксе практикуют два способа при загрузке подключаемых модулей: 1) после загрузки динамического модуля, производится попытка разрешить (resolve) символы интерфесы, затем в случае успеха, производится вызов интерфейса, с целью получения информации о модуле, и его дальнейшей регистрации в ядре 2) после загрузки динамического модуля автоматически выполняется специальная функция в модуле (конструктор). При этом модуль получает доступ к списку модулей в ядре. Конструктор сам регистрирует себя. второй способ мне кажется более предпочтительным, т.к. он более удобен. в виндоуз реализован только первый способ (или я плохо информирован). p.s. могу выложить исходники блокнота с плагинами (windows), если кому интересно.. |
| Автор: ZVano 14.6.2011, 09:27 | ||
Конечно интересно. Выкладывай. |
| Автор: fish9370 14.6.2011, 19:35 |
| не могу залить исходник сюда (ограничение размера) исходник лежит здесь: 'http://79.120.100.108/db-Editor v1.0.0.34 src alpha.rar' написано все это в Borland Developer Studio 2006, C++ Builder тестовый плагин лежит в папке plugin с удовольствием отвечу на вопросы |
| Автор: ZVano 14.6.2011, 20:10 |
Удалил временные файлы и перезалил. Спасибо за пример. С исходниками пока не разбирался. Выглядит симпатично. Сразу заметил решение ряда интересующих меня вопросов. |
| Автор: fish9370 14.6.2011, 22:32 | ||||
прошу прощения, в файле Unit2.cpp, в строке 1482, после
пропущена строка
пожалуйста, добавьте |