通过Swig在C和Lua之间传递变量

我正在一个C项目中有很多类(150),每个类有10到300个左右的字段.我真的很希望能够提供用于测试目的的脚本接口,以便我可以编写不需要任何重新编译的回调代码.我想在Lua中这样做,因为我比对Python更熟悉C语言的C API,但是如果它可以减轻麻烦,那么我很乐意在Python中进行.

我对如何从C调用Lua函数有一个坚实的了解,反之亦然,而且我知道如何来回传递基本数据类型.我的问题是如何使用SWIG在两者之间共享用户指定的数据类型.

例如,在我的C语言中的某个时候,我可能想评估具有250个字段的对象中的几段成员数据.我希望能够将该对象交给Lua,然后可以(希望吗?)使用生成的SWIG包装器操作该对象,显示某些字段,然后将(可能更改的)对象传递回C以便继续使用.

我还希望能够使用包装器在Lua中实例化该对象的实例,并将其传递给C以用作该对象的常规C版本.

这可能吗?有人可以指出我的教程或明确的例子吗?

谢谢你的尽心帮助!

解决方法:

只要使用Swig接口包装用户定义的类型(有关Swig-Lua API的文档,请参见here),交互就应该是无缝的.提供的Swig包装器将允许您实例化新对象,并将它们传递给C,反之亦然.

我不认为Swig-Lua包装还支持Director类,这意味着扩展现有类,实例化它们并将它们传递回C是不可能的.不过,Director支持诸如Python,Java,C#之类的语言.

上一篇:javascript-用于音频嵌入的自定义静音按钮?


下一篇:javascript-无法在HTML页面中嵌入Google趋势图