2011-02-16 67 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時。