Я хочу, как мы можем предоставить свойства библиотеки lua.Как открыть свойства библиотеки Lua из C++
luaL_openlib(L, kName, kVTable, 1); // leave "library" on top of stack
С этим, я могу выставить только функции, как kVTable относится к luaL_Reg
typedef struct luaL_Reg {
const char *name;
lua_CFunction func;
} luaL_Reg;
Eg: С учетом указанных выше кода. Я могу сделать следующее.
local myLib = require "plugin.myLib"
myLib.newFunc();
Однако, я хочу представить таблицу Lua в библиотеку как переменная CONSTANTS.
myLib.CONSTANTS.SOME_CONST_1
myLib.CONSTANTS.SOME_CONST_2
и т. Д. Пожалуйста, дайте мне знать, как я могу выставить lua Table из моей библиотеки в качестве свойства.
Какую версию Lua вы используете? AFAIK luaL_openlib был удален в Lua 5.1. – mpeterv
@peterm Я использую CORONA Enterprise. Из файлов заголовков я мог видеть, что они используют Lua 5.1. Из руководства Lua 5.1 говорится, что функция luaL_openlib была заменена на luaL_register. luaL_register также принимает массив luaL_Reg, что означает, что я могу передавать таблицу с ключом (string) и значениями как cfunctions. Я хочу даже установить таблицу в значения. – kapser
@kapser Если вы раскрываете очень ограниченный набор API от 'C', вы можете использовать то, что предложили @peterm. Но для чего-то более обширного (особенно если это 'C++', в отличие от 'C'), вы можете рассмотреть использование lua API-оболочки, например [luabind] (http://www.rasterbar.com/products/luabind/docs .html). –