У меня есть приложение на C ++, и я хотел бы разработать и предложить Lua API для этого приложения, есть какой-нибудь инструмент, который может мне помочь с этим? Может быть, есть способ пометить какой-нибудь метод и открыть его для уровня Lua API? Для других языков я видел инструмент, который может генерировать API после разбора кода, есть что-то похожее на это для Lua?
Я искренне оценил очень легкий подход LuaBridge, который состоит всего из 1 (ОДНОГО!) Заголовочного файла для включения в ваше приложение.
https://github.com/vinniefalco/LuaBridge
https://github.com/vinniefalco/LuaBridgeDemo
/** Declare LUA binding for this class
*
* @param global_lua
*/
void c_entity::lua_bind(lua_State* L) {
getGlobalNamespace(L)
.beginClass<c_entity>("c_entity")
.addFunction("getSpeed",&c_entity::get_linear_speed)
.addFunction("getName",&c_entity::get_name)
.addFunction("getMaxSpeed",&c_entity::get_max_linear_speed)
.addFunction("getAcceleration",&c_entity::get_max_linear_acceleration)
.addFunction("getHull",&c_entity::get_hull)
.addFunction("getArmor",&c_entity::get_armor)
.addFunction("getShield",&c_entity::get_shield)
.addCFunction("getStatus",&c_entity::getStatus)
.addFunction("logTrace",&c_entity::log_trace)
.addFunction("logInfo",&c_entity::log_info)
.addFunction("logDebug",&c_entity::log_debug)
.addFunction("logError",&c_entity::log_error)
.endClass();
}
Проверять, выписываться SWIG. В зависимости от ваших потребностей и того, как «очистить» заголовки C / C ++, вы можете просто передать целые файлы .h в SWIG или выбрать функции / классы, которые вы хотите экспортировать в Lua (как в этот базовый пример):
%module example
%{
#include "example.h"%}
int gcd(int x, int y);
extern double Foo;