LUA FFI:尝试在执行多个ffi.cdef时重新定义错误

时间:2014-05-08 21:28:20

标签: lua ffi luajit

让我简单一点。

我有多个测试要运行,每次测试后我都会使用package.loaded [] = nil清除当前测试的所有要求。

问题是我们从全局命名空间中删除了所需的文件,我看到这些文件完成的ffi.cdef保持不变,当我确实需要agian时,它会抛出一个错误,因为“尝试重新定义''”

我们有什么方法可以清除加载的cdef吗?或者可以检索加载的cdef,以便我可以保存旧的cdef并在测试完成后恢复?或者还有其他方法我可以做同样的任务吗?

我只是在寻找像ffi.uncdef这样的东西。

1 个答案:

答案 0 :(得分:1)

没有这样的功能,并且有充分的理由。

首先,设置package.loaded[pkg] = nil 不是卸载模块的官方方式,尤其是C代码。 See one of my previous answers。另外,卸载cdef并不那么简单;如果你卸载一个使用它的对象的cdef会怎么样?

测试运行cdef的代码的唯一方法是为每个测试创建一个新的lua_State或luajit进程。

(另外,它是Lua, not LUA