让我们考虑以下 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/