我如何使用 luajit 在带有可变参数的 c 函数中获取 cdata?
How I get the cdata out in c function with variable arguments using luajit?
这是代码。目的是打印消息。
在 PrintC 中,我想得到 e... 但作为 cdata 到达。我该如何解压或规避它?
extern "C"
{
static int PrintC ( lua_State *L )
{
// does not work cdata
//executor* e = ( executor* ) luaL_checkudata(L, 1, "cdata"); does n
//luaL_checkudata(L, 1, "void *");
if ( e->writelog )
{
int no = lua_gettop ( L ) ;
for ( int i = 2; i <= no; i++ )
{
cout << lua_tostring (L,i);
}
}
return 1;
}
}
// initialised as
lua_pushcfunction ( L, PrintC );
lua_setglobal ( L, "PrintC" );
lua_pushinteger ( L, ( long ) this ); // this is in a class executor
lua_setglobal ( L, "p" );
p= ffi.cast("void *",p)
function Print()
return PrintC(p)
end
你不能。 Lua C API 和LuaJIT FFI 是故意分开的,不能交互。
使用 FFI 在 Lua 中重写 PrintC
,或者将 Lua C API 绑定写入您正在使用 p
的库。 IE。使用其中之一。
这是代码。目的是打印消息。 在 PrintC 中,我想得到 e... 但作为 cdata 到达。我该如何解压或规避它?
extern "C"
{
static int PrintC ( lua_State *L )
{
// does not work cdata
//executor* e = ( executor* ) luaL_checkudata(L, 1, "cdata"); does n
//luaL_checkudata(L, 1, "void *");
if ( e->writelog )
{
int no = lua_gettop ( L ) ;
for ( int i = 2; i <= no; i++ )
{
cout << lua_tostring (L,i);
}
}
return 1;
}
}
// initialised as
lua_pushcfunction ( L, PrintC );
lua_setglobal ( L, "PrintC" );
lua_pushinteger ( L, ( long ) this ); // this is in a class executor
lua_setglobal ( L, "p" );
p= ffi.cast("void *",p)
function Print()
return PrintC(p)
end
你不能。 Lua C API 和LuaJIT FFI 是故意分开的,不能交互。
使用 FFI 在 Lua 中重写 PrintC
,或者将 Lua C API 绑定写入您正在使用 p
的库。 IE。使用其中之一。