lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


and maybe you shouldn't open lua state yourself, use the one passed to
your function:

function luaopen_opr(l: plua_state):integer;
var
r: array[0..1] of luaL_reg;
begin
r[0].name := 'sum';
r[0].func := @sum;
luaL_openlib(l, 'opr', @r, 0);
result := 1;
end;

and, maybe you should learn Lua with newr version :-)

2012/11/7 luciano de souza <luchyanus@gmail.com>:
> Hello listers,
> I am trying to understand the basic mechanism of Lua stack
> registrations. This Pascal code compiled, but I have a run-time error.
> As it's an generic error, I could not identify what's wrong.
>
> library opr;
> {$calling cdecl}
> {$mode objfpc}{$H+}
>
> uses
> lua;
>
> function sum(l: plua_state):integer;
> var
> x, y: integer;
> begin
> lua_tonumber(l, x);
> lua_tonumber(l, y);
> lua_pushnumber(l, x+y);
> result := 1;
> end;
>
> function luaopen_opr(l: plua_state):integer;
> var
> r: array[0..1] of luaL_reg;
> begin
> l := lua_open;
> luaL_OpenLibs(l);
> r[0].name := 'sum';
> r[0].func := @sum;
> luaL_openlib(l, 'opr', @r, 0);
> lua_close(l);
> result := 1;
> end;
>
> exports
> luaopen_opr;
> end.
>
> In the Lua code, I would like to do it:
>
> require('opr')
>
> print(opr.sum(3, 5))
>
> I follow C API and I believe the fact it was writen in Pascal won't
> create difficulties for the discutions.
> These are my first steps in C API. Do they seem to be wrong? Does
> someone have any tip for me?
> Regards,
> Luciano
>



--
regards,
Xavier Wang.