2011-02-16 235 views
3

我嵌入的Lua在C++应用程序,我想提供一个Print()之类的函数(或者干脆忽略Lua的打印功能),这样我就可以通过简单的数据类型的变量(字符串,布尔值和数字)作为字符串写入我的C++应用程序。传递一个Lua变量到C

所以我所希望做的是有一个C++函数,其中我出口到Lua,被称为my_print()

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

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()等。

关于如何开始编写这样的C/C++函数的小小片段可以出口到Lua并以上述方式使用,将非常感激。

回答

4

你看的print执行等功能从标准的Lua库?你可能想从lmathlib.c开始。见http://www.lua.org/source/5.1/。也可以从源代码tarball中尝试etc/min.c

0

如果你这样做,就像你在你的例子中那样,一个参数my_print获得已经是一个字符串(或更好的lua_lstring),因为这些值通过连接运算符..强制为字符串类型。只有false的东西不会起作用。所以通过tostring(var)只会在大多数情况下工作。要获得更多控制权,您可以查看string.format

1

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

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