我正在处理一个包含大量类(150 多个)的 C++ 项目,每个类都有 10 到 300 个左右的字段。我真的很想能够提供一个用于测试目的的脚本接口(interface),这样我就可以编写不需要任何重新编译的回调代码。我想在 Lua 中执行此操作,因为我对它的 C API 比对 Python 的 API 更熟悉,但如果它能省去麻烦,我很乐意在 Python 中执行此操作。
我已经掌握了如何从我的 C++ 调用 Lua 函数,反之亦然,并且我知道如何来回传递基本数据类型。我的问题是如何使用 SWIG 在两者之间共享用户指定的数据类型。
例如,在我的 C++ 中的某个时刻,我可能想要计算一个具有 250 个字段的对象中的几条成员数据。我希望能够将该对象交给 Lua,然后它可以(希望如此?)使用生成的 SWIG 包装器来操作该对象,显示某些字段,然后将(可能更改的)对象传递回 C++ 以继续使用.
我还希望能够使用包装器在 Lua 中实例化对象的实例,并将其传递给 C++ 以用作对象的普通 C++ 版本。
这可能吗?有人可以向我指出教程或明确的示例吗?
感谢您提供的任何帮助!
最佳答案
只要您使用 Swig 接口(interface)包装您的用户定义类型(有关 Swig-Lua API 的文档,请参阅 here),交互应该是无缝的。提供的 Swig 包装器将允许您实例化新对象,将它们传递给 C++,反之亦然。
我不认为 Swig-Lua 包装支持导向器类,这意味着扩展现有类、实例化它们并将它们传回 C++ 是不可能的。不过,Director 支持 Python、Java、C# 等语言。
关于c++ - 通过 Swig 在 C++ 和 Lua 之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/884435/