Как правило, это то, что вам придется раскрыть самостоятельно, так что да, это будет зависеть от языка, на котором написана ваша система (хотя часто можно написать и оболочки для других языков).
Если, например, у вас есть программа, написанная на C, для Windows, плагины будут написаны для вашей программы как DLL. Во время выполнения вы должны вручную загрузить эти библиотеки DLL и предоставить им некоторый интерфейс. Например, библиотеки DLL могут предоставлять функцию gimme_the_interface()
, которая может принимать структуру, заполненную указателями на функции. Эти указатели функций позволят DLL выполнять вызовы, регистрировать обратные вызовы и т. Д.
Если бы вы были в C ++, вы бы использовали систему DLL, за исключением того, что вы, вероятно, передали бы указатель объекта вместо структуры, а объект реализовал бы интерфейс, обеспечивающий функциональность (выполняя ту же функцию, что и структура, но менее некрасиво). Для Java вы бы загружали файлы классов по требованию вместо DLL, но основная идея была бы такой же.
Во всех случаях вам нужно определить стандартный интерфейс между вашим кодом и плагинами, чтобы вы могли инициализировать плагины и чтобы плагины могли взаимодействовать с вами.
P.S. Если вы хотите увидеть хороший пример системы плагинов C ++, посмотрите foobar2000 SDK . Я давно этим не пользовался, но раньше это было действительно хорошо сделано. Я предполагаю, что это все еще.