LuaJIT,如何将cdata转换为userdata?

我想使用 LuaJIT 创建 Lua 中的结构体和数组。但是,我使用这些数据的函数需要 userdata 或包含数据的字符串(不是字符串表示,只是作为容器使用)。

但是,查看api时我没有看到是否可能实现这一点。这可以吗?

谢谢。

点赞
用户2198692
用户2198692

LuaJIT FFI 不应与经典的 C/API 混合使用。虽然有一些机制可以将 const char* 指针转换为 Lua 字符串(ffi.string),但无法将 FFI 结构体转换为 Lua userdata。

FFI 函数没有 lua_State 的信息,这在 C 端创建 userdata 时是必需的。

我不知道您的 C/API 绑定基础现在有多大,但如果您坚持使用 FFI,则一种解决方案是将您的 C/API 函数重写为 FFI。您可以逐步进行,确保 FFI 与 C/API 之间有清晰的界线。

2013-09-16 07:40:00