gpt4 book ai didi

c++ - 如何使用 luajit 在带有变量参数的 c 函数中获取 cdata?

转载 作者:行者123 更新时间:2023-11-30 17:13:53 25 4
gpt4 key购买 nike

这是代码。目的是打印消息。在 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 绑定(bind)写入您正在使用 p 的库。 IE。使用其中之一。

关于c++ - 如何使用 luajit 在带有变量参数的 c 函数中获取 cdata?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com