Вы не можете использовать .
в качестве имени функции в Lua. Если вы пытаетесь поместить все свои функции Lua в глобальную таблицу с именем PN
, то вам действительно нужно это сделать.
Помните: lua_register
это просто макрос:
#define lua_register(L,n,f) \
(lua_pushcfunction(L, f), lua_setglobal(L, n))
Нет ничего, что говорило бы, что вы не могли бы сделать это более конкретно.
Если у вас есть глобальная таблица PN
, в которую вы хотите зарегистрировать функции Lua, вы делаете следующее:
- Поместите таблицу
PN
в стек, используя lua_getfield(L, LUA_GLOBALSINDEX, "PN")
.
- Вставьте функцию, которую вы хотите зарегистрировать в стек, с помощью
lua_pushcfunction(L, Color)
.
- Поместите функцию в нужное место в таблице, набрав
lua_setfield(L, -2, "Color")
.
- Извлеките стол из стека с помощью
lua_pop(L, 1)
.