Я хочу включить Lua-Scripting (Lua 5.1) в моем приложении Delphi.Для этой цели я использую заголовок Files of Thomas Lavergne.
Теперь я пытаюсь зарегистрировать тип пользовательских данных в следующем примере: http://www.lua.org/pil/28.2.html
В «новой функции массива» используется команда* luaL_getmetatable *.
static int newarray (lua_State *L) {
int n = luaL_checkint(L, 1);
size_t nbytes = sizeof(NumArray) + (n - 1)*sizeof(double);
NumArray *a = (NumArray *)lua_newuserdata(L, nbytes);
luaL_getmetatable(L, "LuaBook.array");
lua_setmetatable(L, -2);
a->size = n;
return 1; /* new userdatum is already on the stack */
}
К сожалению, функция * luaL_getmetatable * помечена как старая в моем заголовочном файле и закомментирована.Я попытался активировать его снова, но, как и ожидалось, я получу сообщение об ошибке, поскольку точка входа dll не может быть найдена.
Это Delphi-перевод этого примера (с использованием другого типа данных, не являющегося массивом)
Type
tMyType = tWhatever;
pMyType = ^tMyType;
{...}
Function newusertype(aState : pLua_State) : LongInt; cdecl;
Var
NewData : pMyType;
Begin
Result := 0;
NewData := lua_newuserdata(aState, SizeOf(tMyType ));
NewData^ := GetInitValue;
luaL_getMetaTable(aState, 'myexcample.mytype'); // Error/unknown function
lua_setmetatable(aState, -2);
Result := 1;
End;
Теперь я ищу замену luaL_getMetaTable.Я не нашел никакой информации об этом.На самом деле я не нашел никакой информации, что luaL_getMetaTable устарел, но, похоже, это: (.