C++中調(diào)用Lua函數(shù)實(shí)例
唉,今天心情有點(diǎn)糟糕,我就少說一些啰嗦的話了。
(旁白:太好了…)
上一章傳送門:http://www.dhdzp.com/article/55096.htm
經(jīng)過前面幾章的介紹,相信大家對(duì)Lua的堆棧已經(jīng)比較熟悉了,如果還不是很熟悉的朋友,建議多看幾遍前面的教程,或者多敲幾次代碼。
那么,如果已經(jīng)對(duì)Lua的堆棧比較熟悉,接下來的內(nèi)容就很簡(jiǎn)單了。
今天我們來看看C++如何調(diào)用Lua的函數(shù),先看看現(xiàn)在Lua文件是什么樣的:
-- helloLua.lua文件
myName = "beauty girl"
helloTable = {name = "mutou", IQ = 125}
function helloAdd(num1, num2)
return (num1 + num2)
end;
我們看到多了個(gè)helloAdd函數(shù),那么,現(xiàn)在我們要用C++調(diào)用這個(gè)函數(shù)。
(旁白:肯定又要用到getglobal了,每次都有它~!= =)
直接上代碼了:
/* C++調(diào)用lua的函數(shù) */
void HelloLua::demo3() {
lua_State* pL = lua_open();
luaopen_base(pL);
/* 執(zhí)行腳本 */
luaL_dofile(pL, "helloLua.lua");
/* 把helloAdd函數(shù)對(duì)象放到棧中 */
lua_getglobal(pL, "helloAdd");
/* 把函數(shù)所需要的參數(shù)入棧 */
lua_pushnumber(pL, 10);
lua_pushnumber(pL, 5);
/*
執(zhí)行函數(shù),第一個(gè)參數(shù)表示函數(shù)的參數(shù)個(gè)數(shù),第二個(gè)參數(shù)表示函數(shù)返回值個(gè)數(shù) ,
Lua會(huì)先去堆棧取出參數(shù),然后再取出函數(shù)對(duì)象,開始執(zhí)行函數(shù)
*/
lua_call(pL, 2, 1);
int iResult = lua_tonumber(pL, -1);
CCLOG("iResult = %d", iResult);
}
簡(jiǎn)單說明一下步驟:
1) 執(zhí)行腳本(旁白:我就知道你會(huì)說廢話。。。)
2) 將helloAdd函數(shù)放到棧中:lua_getglobal(pL, “helloAdd”) 。(旁白:看吧,我就知道~!)
3) helloAdd有2個(gè)參數(shù),我們要把參數(shù)傳遞給lua,所以2個(gè)參數(shù)都要放到棧里。
4) 第2和第3步已經(jīng)把函數(shù)所需要的數(shù)據(jù)都放到棧里了,接下來只要告訴lua去棧里取數(shù)據(jù),執(zhí)行函數(shù)~! 調(diào)用lua_call即可,注釋已經(jīng)很詳細(xì)了,這里就不重復(fù)了。
(旁白:太簡(jiǎn)單了點(diǎn)吧,反正不管做什么事情,把東西丟到棧里,然后從棧里取東西,就OK了~你可以滾了,以后教程我來寫,你負(fù)責(zé)吐槽~)
來,大家忽略旁白,教程什么的還是我來寫比較好,主要是,吐槽這工作,不符合我的身份~
(旁白:…我有種被打擊了的感覺)
本章到此結(jié)束,很簡(jiǎn)單吧?~
下一章我們介紹在Lua中調(diào)用C++的函數(shù)~!
(旁白:這個(gè)我喜歡~!)
- Lua教程(二十):Lua調(diào)用C函數(shù)
- Lua教程(四):在Lua中調(diào)用C語(yǔ)言、C++的函數(shù)
- Lua教程(三):C語(yǔ)言、C++中調(diào)用Lua的Table示例
- Lua中調(diào)用C++函數(shù)實(shí)例
- Lua調(diào)用自定義C模塊
- Lua中調(diào)用C語(yǔ)言函數(shù)實(shí)例
- Lua教程(十九):C調(diào)用Lua
- Lua編程示例(六): C語(yǔ)言調(diào)用Lua函數(shù)
- C語(yǔ)言中調(diào)用Lua函數(shù)實(shí)例
- C語(yǔ)言與Lua之間的相互調(diào)用詳解
相關(guān)文章
Lua中實(shí)現(xiàn)php的strpos()以及strrpos()函數(shù)
這篇文章主要介紹了在Lua中實(shí)現(xiàn)php的strpos()以及strrpos()函數(shù)的方法,需要的朋友可以參考下2014-11-11
Lua腳本實(shí)現(xiàn)遞歸刪除一個(gè)文件夾
這篇文章主要介紹了Lua腳本實(shí)現(xiàn)遞歸刪除一個(gè)文件夾,本文給出了C++和Lua兩個(gè)版本的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-05-05
Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié)
這篇文章主要介紹了Lua中關(guān)于元方法的一些知識(shí)點(diǎn)小結(jié),本文講解了兩個(gè)具有不同元表的值進(jìn)行算術(shù)操作、關(guān)系類的元方法、保護(hù)元表,需要的朋友可以參考下2014-09-09
Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量)
這篇文章主要介紹了Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量),使用本文方法可以實(shí)現(xiàn)避免創(chuàng)建全局變量,在必須使用全局變量的情況下也給出了實(shí)現(xiàn)技巧,需要的朋友可以參考下2014-12-12

