FOnline Engine
Current master GitHub
Документация Docs/ru/reference/native-extension/bindings.md

Правила нативного биндинга

Сгенерированный справочник. Не редактируйте его напрямую. Обновите BuildTools/NativeExtensionInterface.json, затем выполните python BuildTools/docs_native_extension.py --write.

Обзор Роли Хуки Биндинги Канонический JSON Руководство

Эти правила образуют переиспользуемую границу. Настройка проектных зависимостей, нативное состояние, настройки и упаковка остаются во владении проекта.

Стабильный ID Правило Требование Причина
native-extension.binding.registration-order Порядок регистрации Вызывайте AddEngineSources после AddThirdPartyLibraries и до точки входа стадии RegisterEngineSources. Проектные файлы должны попасть в списки исходников ролей и FO_SOURCE_META_FILES до настройки кодогенерации и базовых библиотек.
native-extension.binding.namespace Пространство имён движка Объявляйте экспорты метаданных внутри FO_BEGIN_NAMESPACE/FO_END_NAMESPACE, а определения квалифицируйте через FO_NAMESPACE. Один исходник должен компилироваться как с включённым, так и с выключенным настроенным пространством имён движка.
native-extension.binding.script-export Граница экспорта в скрипты Используйте FO_SCRIPT_API с поддерживаемым тегом метаданных ///@; не добавляйте макросы входа трассировки стека в экспортируемые тела. Кодогенерация разбирает объявление и создаёт границу регистрации между нативным кодом и скриптами.
native-extension.binding.pointer-contract Контракт указателей Используйте ptr<T>/nptr<T> для заимствований дескрипторов движка, а для владения — словарь владеющих указателей движка. Кодогенерация отклоняет сырые указатели на дескрипторы, а nullable-семантика должна совпадать в нативных и скриптовых объявлениях.
native-extension.binding.compatibility Совместимость Пересобирайте и перезапекайте каждое проектное изменение нативных метаданных для закреплённой ревизии движка. Зарегистрированные метаданные и наличие большинства хуков входят в сгенерированное состояние совместимости; бинарная совместимость независимых ревизий не обещается.
native-extension.binding.dependencies Зависимости Объявляйте проектные библиотеки, пути включения, определения компилятора, платформенные условия и содержимое пакета во встраивающем проекте. AddEngineSources отвечает только за маршрутизацию исходников; движок не выводит автоматически правила проектных зависимостей и распространения.

Минимальный экспортируемый метод

#include "Common.h"
#include "Server.h"

FO_USING_NAMESPACE();
FO_BEGIN_NAMESPACE
///@ ExportMethod
FO_SCRIPT_API int32_t Server_Game_ProjectValue(ptr<ServerEngine> server);
FO_END_NAMESPACE

int32_t FO_NAMESPACE Server_Game_ProjectValue(ptr<ServerEngine> server)
{
    ignore_unused(server);
    return 1;
}

Экспортируемое тело намеренно не содержит макроса входа трассировки стека. Обычные неэкспортируемые нативные функции сохраняют стандартное соглашение движка о трассировке стека.

Введите запрос.