Импорт функций
Узнайте, как импортировать функции из других плагинов, написанных на разных языках, и использовать их в своем собственном.
Чтобы использовать функции из другого плагина в вашем плагине на Go, вам необходимо сгенерировать специфичные для языка заголовочные файлы. Эти заголовочные файлы предоставляют необходимые обертки для вызова функций, экспортируемых другими плагинами. Это руководство объясняет, как сгенерировать эти заголовочные файлы и как их использовать в вашем плагине на Go.
Генерация заголовочных файлов
Plugify предоставляет скрипт на Python (generator.py
) для автоматической генерации заголовочных файлов для импорта функций из других плагинов. Эти заголовочные файлы включают функции-обертки, которые обрабатывают вызовы функций и передачу параметров.
Шаги по генерации заголовочных файлов
Найдите скрипт генератора:
- Скрипт
generator.py
находится в папкеgenerator
языкового модуля Go.
Запустите скрипт генератора:
- Откройте терминал или командную строку и перейдите в папку, содержащую
generator.py
. - Запустите скрипт с помощью следующей команды:
путь_к_плагину.pplugin
: Путь к файлу манифеста плагина (.pplugin
), из которого вы хотите импортировать функции.выходная_папка
: Каталог, в котором будет сохранен сгенерированный заголовочный файл.
Пример:
Подключите сгенерированный заголовочный файл:
- Скрипт сгенерирует заголовочный файл (например,
plugin_from_another_language.go
) в указанной выходной папке. - Подключите этот заголовочный файл в исходные файлы вашего плагина на Go, чтобы использовать экспортированные функции.
Использование сгенерированных функций-оберток
Сгенерированный заголовочный файл содержит функции-обертки, которые позволяют вызывать функции из другого плагина. Эти обертки обрабатывают поиск адреса функции и передачу параметров.
Пример сгенерированного заголовочного файла
Вот пример сгенерированного заголовочного файла для плагина с именем plugin_from_another_language
:
Как это работает
- Функция-обертка (
ParamCallback
) обрабатывает маршалинг параметров и очистку. - Функция
C.ParamCallback
устанавливается языковым модулем во время загрузки плагина. - Функция-обертка гарантирует, что типы Go правильно преобразуются в типы C и наоборот.
Пример: Использование сгенерированного заголовочного файла
Вот как вы можете использовать сгенерированный заголовочный файл в вашем плагине на Go:
Когда необходима генерация заголовочных файлов?
Генерация заголовочных файлов необходима при импорте функций из плагинов, написанных на статически типизированных языках, таких как C++ или Go. Без этих заголовочных файлов компилятор не сможет ссылаться на экспортированные функции. Для динамически типизированных языков, таких как Python, генерация заголовочных файлов не требуется, поскольку связывание методов происходит во время выполнения.
Лучшие практики
- Используйте скрипт генератора: Всегда используйте скрипт
generator.py
для генерации заголовочных файлов для импортируемых функций. - Подключайте сгенерированные заголовочные файлы: Подключайте сгенерированные заголовочные файлы в исходные файлы вашего плагина для доступа к экспортированным функциям.
- Тестируйте тщательно: Тестируйте импортированные функции, чтобы убедиться, что они работают так, как ожидается.
- Документируйте зависимости: Четко документируйте плагины и функции, от которых зависит ваш плагин.
Заключение
Импорт функций из другого плагина в Go прост, если вы используете скрипт generator.py
для генерации необходимых заголовочных файлов. Эти заголовочные файлы предоставляют функции-обертки, которые обрабатывают поиск адреса функции и передачу параметров, что упрощает интеграцию функциональности из других плагинов. Следуя шагам и лучшим практикам, изложенным в этом руководстве, вы можете создавать надежные и совместимые плагины в экосистеме Plugify.