c++ - 在 C++ 中嵌入 Lua : Accessing C++ created through Lua, 回到 C++(或将结果从 Lua 返回到 C++)

标签 c++ lua

标题可能听起来有点递归 - 但这是我正在尝试做的:

我有 C++ 类 Foo 和 Foobar; 我正在使用 tolua++ 将它们导出到 Lua

在 Lua 中:

function wanna_be_starting_something()
  foo = Foo:new()
  fb = Foobar:new()

  -- do something
  foo.setResult(42)  -- <- I want to store something back at the C++ end
end

在 C++ 中

int main(int argc, char argv[])
{
    MyResult res;

    LuaEngine * engine = new LuaEngine();
    engine->run('wbs-something.lua');

    // I now want to be able to access the stored result, in variable res
};

所以我的问题是:如何将数据从 Lua 操作的 C++ 对象传递回 C++ 程序?

最佳答案

要了解如何来回交换数据,您应该了解 Lua 堆栈,这是 Lua 用来与主机程序通信的结构。我想 tolua++ 会为您导出的类/方法处理这个问题。

这是一个好的开始:http://www.lua.org/pil/24.html适用于 Lua 5.0,但有关于如何使其与 5.1 一起使用的指示(我假设是您正在使用的 Lua 版本)。

如果您不想深入了解所有细节,您始终可以求助于创建一个将值设置到全局对象中的临时 C++ 方法。恕我直言,这不是最干净的方法,但可以工作。

关于c++ - 在 C++ 中嵌入 Lua : Accessing C++ created through Lua, 回到 C++(或将结果从 Lua 返回到 C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861942/

相关文章:

c++ - 从并发析构函数停止 boost::asio::io_service::run()

c++ - 调用返回表的lua函数

utf-8 - 如何在lua中将UTF8字节数组转换为字符串

c++ - 使用 OpenCV 如何根据 x 和 y 坐标裁剪图像,并允许 x 和 y 坐标作为裁剪的中心?

c++ - 指向 vector 和多态性的唯一指针

oop - 错误的参数 #2 到 'setmetatable'(nil 或预期的表)?

perl - Capistrano 是否有 Perl 或 Lua 替代品?

lua - Lua 中的 "Bitwise AND"

c++ - 使用 gcc 6 构建 OpenJDK8 时出现链接错误

c++ - vector<string> 超出范围后不清除内存