2009-10-12 19 views
-4

Эй, народ, мне нужно создать плагин, который обновляет приложение. Посмотрите, у меня есть приложение-хост, но, вероятно, я обнов его с большим количеством функций. Я работаю в Windows с Delphi 7. В принципе, «мой плагин» должен добавить в хост-приложение 2 или 3 новые функции. Как я могу запрограммировать подключаемый модуль (или функцию), который вставляет новый код (новые функции) в хост-приложение без повторной компиляции?Как запрограммировать подключаемый модуль?

Примечание: Я сожалею о своем английском. Мой естественный язык - испанский.

Больше спасибо, Yulien.

+5

Платформа, язык программирования и т. Д.? –

+0

Этот вопрос бессмыслен без какого-либо контекста. – DaveE

+0

Извините, человек! Я работаю над Windows, в настольном приложении, с Delphi. – Yulien

ответ

1

Есть разные способы достижения этого, я дам вам один из самых простых.

Допустим, вы программируете с C# на Windows (в других языках и средах похожи)

Часть 1. Вы должны быть в состоянии загрузить сборку (если C++ библиотеку DLL). Возможно, вы захотите взять это из файла конфигурации. Сделайте это для каждой части функциональности, которую вы хотите расширить приложениями плагинов.

Часть 2. Вы должны иметь возможность вызывать код из этого плагина, поэтому добавьте функциональность в интерфейс. Например, основное приложение будет кодировать интерфейс IMyPluginCapability, и ваш плагин будет включать в себя некоторый класс, который реализует этот интерфейс. Вы можете выяснить, какой класс через отражение.

Часть 3. Вызовите функции, которые вы хотите продлить плагин.

Ваш язык, окружающая среда, несомненно, будут иметь схожие возможности. Вы можете найти информацию об этой среде.

2

Вы не указали язык или платформу, на которой вы работаете, поэтому я могу дать вам общий ответ.

Плагины могут быть реализованы несколькими различными способами. Простейшим (YMMV) является компиляция плагина в динамически связанную библиотеку (DLL в Windows) или общий объект (.so под Linux), а затем вы используете соответствующую функцию для получения определенных функций из библиотеки DLL и их вызова.

Искать в Интернете функцию LoadLibrary() для Windows или dlopen() в системах Un * x/Linux для получения дополнительной информации.

Альтернативой является внедрение интерпретатора языка сценариев в вашу программу. Например, Firefox реализован в C/C++ и предоставляет свои внутренние функции его интерпретатору JavaScript (SpiderMonkey) - таким образом, все плагины Firefox могут быть написаны на JavaScript.

Смежные вопросы