将 Lua 变量传递给 C。

我正在将Lua嵌入到C++应用程序中,并且我想提供一个类似print()的函数(或者只是简单地覆盖Lua的print函数),以便我可以将简单数据类型的变量(字符串,布尔值和数字)作为字符串传递到我的C++应用程序中。

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

然后我可以在Lua块中调用my_print(),如下所示:

a = 22/7
b = false
c = 42
my_print('变量a的值是:' .. a)
my_print('b:' .. b)
my_print('c是:' .. c)

每次调用my_print()时,它将向C++应用程序传递一个C++字符串。我已经查看了Lua C API,我怀疑我将不得不使用lua_gettop(L),lua_type()等。

有一个小段代码,可以帮助我编写这样一个可以导出到Lua并以上述方式使用的C/C++函数,这将非常感谢。

原文链接 https://stackoverflow.com/questions/5011347

点赞
stackoverflow用户107090
stackoverflow用户107090

你是否查看过标准 Lua 库中 print 和其他函数的实现?建议从 lmathlib.c 开始查看,可以前往 http://www.lua.org/source/5.1/。此外,也可以尝试查看源代码打包中的 etc/min.c

2011-02-16 01:37:03
stackoverflow用户513763
stackoverflow用户513763

如果按照你的示例这样做,那么my_print这个参数已经是一个字符串(或更好的lua_lstring类型),因为这些值会被连接运算符 .. 强制转换为字符串类型。只有 false 这个值不能正常处理。因此在大多数情况下,只需传递 tostring(var) 即可。如果需要更多控制,可以查看 string.format

注:此文本原本是用英文写的,并且包含了 Markdown 的标记格式。

2011-02-16 09:43:28
stackoverflow用户30470
stackoverflow用户30470

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

在这里他们返回了字符串,但这是个很好的起点。我不太能反驳lhf,但这处理了元表的_tostring,而min.c则不是。我认为这很重要,尤其是当你涉及Lua对象时。

2011-02-16 21:20:30