如何使用luajit在c函数中使用变量参数获取cdata?

时间:2015-06-01 09:56:33

标签: c++ c windows lua 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

1 个答案:

答案 0 :(得分:0)

你不能。 Lua C API和LuaJIT FFI是故意分开的,不能互动。

使用FFI在Lua中重写PrintC,或者将Lua C API绑定写入您使用p的库中。即使用其中一种。