我在一个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 ++函数的一小段内容将非常受欢迎。
答案 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)
。