c++ - 将 LuaBridge 与指向内置类型的指针一起使用

标签 c++ binding lua luabridge

让我们考虑以下 C 函数:

void returnMultipleValuesByPointer(int* ret0, int* ret1, int* ret2)
{
    *ret0 = 0;
    *ret1 = 1;
    *ret2 = 2;
}

如何使用 LuaBridge 在 Lua 中公开它?所有文档和示例都说明了指向对象是类的复杂情况,但我找不到如何处理这种简单情况...

简单的方法(即 luabridge::getGlobalNamespace(L).addFunction("test", &returnMultipleValuesByPointer)) 编译但不理解值是通过地址传递的。

最佳答案

您不能直接这样做。您必须编写一个包装器方法,将参数转换为返回值。这就需要写这样一个方法。例如,如果这些是返回值(即:它们不带参数):

int lua_ReturnMultipleValuesByPointer(lua_State *L)
{
  int ret0;
  int ret1;
  int ret2;
  returnMultipleValuesByPointer(&ret0, &ret1, &ret2);
  lua_pushinteger(L, ret0);
  lua_pushinteger(L, ret1);
  lua_pushinteger(L, ret2);
  return 3;
}

您需要使用“addCFunction”注册它,因为它是一个标准的 Lua 函数。

关于c++ - 将 LuaBridge 与指向内置类型的指针一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14249438/

相关文章:

objective-c - 为什么这个属性在 UI 中不更新?

javafx - FXML:绑定(bind)到 Controller

linux - 如何查找 lua 应用程序中包含的库

c++ - 如何使用 OpenCV 拉直曲线?

c++ - 为什么使用静态字符缓冲区来实例化从 DLL 加载的 C++ 类

iis - "Failed to enumerate SSL bindings"错误代码 234

lua - Lua 有哪些很棒但鲜为人知的库?

arrays - 修改了key但没有真正修改value?

c++ - 如何正确销毁从另一个线程运行的窗口?

c++ - 打包 LEFT 和 RIGHT channel 数据