Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LuaJIT如何用FFI包装C数据类型?_C_Lua_Ffi_Luajit_Cross Language - Fatal编程技术网

LuaJIT如何用FFI包装C数据类型?

LuaJIT如何用FFI包装C数据类型?,c,lua,ffi,luajit,cross-language,C,Lua,Ffi,Luajit,Cross Language,假设我有以下LuaJIT代码: local ffi = require "ffi" ffi.cdef[[ typedef struct { int num; } container; ]] local a = ffi.new("container") a.num = 10 library.doSomethingTo(a) 假设library.doSomethingTo由以下C代码定义: int doSomethingDo(lua_State *L) { //code he

假设我有以下LuaJIT代码:

local ffi = require "ffi"

ffi.cdef[[
    typedef struct { int num; } container;
]]

local a = ffi.new("container")
a.num = 10

library.doSomethingTo(a)
假设
library.doSomethingTo
由以下C代码定义:

int doSomethingDo(lua_State *L) {
    //code here
}

//这里编码
需要什么代码才能生成
库。doSomethingTo(a)
print 10?

所以,概括一下:你想获取一个通过FFI创建的对象,并通过Lua API与之对话。@Nicolas我想是吧?我没有足够的知识来确认这是对我问题的准确总结。您也可以将C导出函数与
ffi.cdef
一起使用,但如果您想使用标准Lua C函数,则需要以某种方式将参数解析为LuaVM