Как я могу получить cdata в функции c с переменными аргументами, используя luajit?

Вот код Целью является печать сообщений.
В PrintC я хотел бы получить е … но поступает как 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

0

Решение

Ты не можешь Lua C API и LuaJIT FFI намеренно разделены и не могут взаимодействовать.

перезапись PrintC в Lua, используя FFI, или запишите привязки API Lua C к библиотеке, которую вы используете p с. То есть Используйте один или другой.

0

Другие решения


По вопросам рекламы [email protected]