我已经开始遇到某些功能的轻微问题,我已经使用luabind绑定了lua。这些函数返回或将std:string对象作为参数返回,而c ++最终得到的数据是垃圾,显然是因为lua无法识别数据类型。我可以根据需要手动绑定std :: classes,但我不得不怀疑是否已经在任何地方对c标准库进行了操作。我似乎无法找到任何类型的绑定库;有谁知道这样的项目是否存在?
答案 0 :(得分:3)
Luabind已经在Lua字符串和std :: string(以及char *)之间进行了自动转换。所以你应该能够将它们用作参数和/或返回值。如果你不能这样做,那么无论是在你身边还是在Luabind身边都会出现问题。
Luabind还有an adapter将符合STL样式容器的返回类型转换为Lua迭代器函数。因此,你可以在这样的for循环中使用它:
for object in CppFuncThatReturnsStdVector() do
--Do something with "object"
end
除了这些之外,我不知道有任何特别的努力要使Luabind库直接将标准C ++库公开给Lua。无论如何,这可能不是一个好主意; Lua表满足了STL样式容器的大部分需求。大多数其他东西都是Lua可以用自己的标准库处理的东西。