将Lua变量传递给C

时间:2011-02-16 00:51:57

标签: c++ c lua

我在一个C ++应用程序中嵌入Lua,我想提供类似print()的函数(或者简单地覆盖Lua的print函数),这样我就可以将简单数据类型的变量(string,boolean和number)传递给我C ++ app as strings。

所以我要做的是拥有一个C ++函数,我将其导出到Lua,名为my_print()

然后我可以像这样在Lua块中调用my_print():

a = 22/7
b = false
c = 42
my_print('The value of variable a is: ' .. a)
my_print('b: ' .. b)
my_print('c is: ' .. c)

每次调用my_print()时,它都会将C ++字符串传递给C ++应用程序。我看过Lua C API,我怀疑我将不得不使用lua_gettop(L),lua_type()等。

关于如何开始编写可以导出到Lua并以上述方式使用的C / C ++函数的一小段内容将非常受欢迎。

3 个答案:

答案 0 :(得分:4)

您是否看过print的实现以及标准Lua库中的其他函数?您可能希望从lmathlib.c开始。见http://www.lua.org/source/5.1/。也可以从源代码tarball中尝试etc/min.c

答案 1 :(得分:1)

你应该看看这个http://www.lua.org/source/5.1/lbaselib.c.html#luaB_tostring

这里他们正在返回字符串,但这是一个很好的起点。我不能真的不同意lhf,但这会处理元表的__tostring,而min.c则不会。我认为这非常重要,尤其是当你进入Lua oo时。

答案 2 :(得分:0)

如果您在示例中执行此操作,则一个参数my_print gets已经是一个字符串(或更好的lua_lstring),因为连接运算符{{1}将值强制转换为字符串类型}。只有..的东西不起作用。所以只要通过false就可以了。要获得更多控制权,您可以查看tostring(var)