婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Lua中調(diào)用C++函數(shù)實(shí)例

Lua中調(diào)用C++函數(shù)實(shí)例

熱門(mén)標(biāo)簽:上海企業(yè)外呼系統(tǒng)排名 智能語(yǔ)音電銷(xiāo)的機(jī)器人 如何利用高德地圖標(biāo)注家 400手機(jī)電話(huà)免費(fèi)辦理 揚(yáng)州電銷(xiāo)外呼系統(tǒng)軟件 開(kāi)通400電話(huà)申請(qǐng)流程 百度地圖標(biāo)注位置網(wǎng)站 電腦外呼系統(tǒng)輻射大嗎 武漢百應(yīng)人工智能電銷(xiāo)機(jī)器人

到這為止,大家對(duì)Lua和C++之間的通信應(yīng)該有些熟悉了,今天我們來(lái)介紹最后一個(gè)操作。
(旁白:什么?最后一個(gè)?要結(jié)束了么?太好了~!)

上一章傳送門(mén):https://www.jb51.net/article/55097.htm

1. Lua調(diào)用C++的函數(shù)

Lua要調(diào)用C++的函數(shù)還是蠻方便的,首先,我們來(lái)創(chuàng)建一個(gè)c++函數(shù)先:

復(fù)制代碼 代碼如下:

public:
  static int getNumber(int num);
  
  
int HelloLua::getNumber( int num ) {
    CCLOG("getNumber num = %d", num);
    return num + 1;
}

類(lèi)的什么的,我就忽略了,直接上函數(shù)。
(旁白:= =好懶!)
 
這是一個(gè)很簡(jiǎn)單的函數(shù),給出一個(gè)值,返回一個(gè)+1后的值。
現(xiàn)在,我們想在Lua中調(diào)用這個(gè)函數(shù),得多寫(xiě)一個(gè)函數(shù)。
(旁白:那個(gè),為嘛getNumber函數(shù)是靜態(tài)的?)
復(fù)制代碼 代碼如下:

public:
static int cpp_GetNumber(lua_State* pL);


int HelloLua::cpp_GetNumber( lua_State* pL ) {
    /* 從棧頂中取一個(gè)值 */
    int num = (int)lua_tonumber(pL, 1);

    /* 調(diào)用getNumber函數(shù),將返回值入棧 */
    lua_pushnumber(pL, getNumber(num));

    /* 返回值個(gè)數(shù),getNumber只有一個(gè)返回值,所以返回1 */
    return 1;
}


(旁白:又是靜態(tài)的!)
這是怎么回事呢?我們很清楚,Lua和C++只能通過(guò)堆棧通信,所以L(fǎng)ua是不可能直接調(diào)用getNumber函數(shù)的,所以我們建立一個(gè)cpp_GetNumber函數(shù)作為中介。
cpp_GetNumber函數(shù)有一個(gè)lua_State* pL參數(shù),有了這個(gè)參數(shù),c++就能從Lua的堆棧中取值了,剩下的都很簡(jiǎn)單,不想過(guò)多的解釋…
 
還是解釋一下吧。
(旁白:你妹紙的,我就知道!)
 
1) 首先,Lua腳本里會(huì)調(diào)用cpp_GetNumber函數(shù),至于為什么能調(diào)用,一回解釋?zhuān)抑琅园滓欢〞?huì)問(wèn)的。(旁白:有種無(wú)力吐槽的感覺(jué)。。。)
2) 當(dāng)cpp_GetNumber被調(diào)用時(shí),一切又回到C++對(duì)Lua的操作了,棧頂里會(huì)存放函數(shù)所需要的參數(shù),取出來(lái)用就可以的。
3) Lua調(diào)用cpp_GetNumber之后,需要一個(gè)結(jié)果,當(dāng)然,這個(gè)結(jié)果同樣只能存放在棧里,所以理所當(dāng)然地要把getNumber的結(jié)果入棧。
4) 最后,cpp_GetNumber return了一個(gè)值,這個(gè)值不是函數(shù)的執(zhí)行結(jié)果,而是getNumber需要返回值的個(gè)數(shù)(Lua支持多個(gè)返回值的函數(shù))
旁白,你明白了么?
(旁白:額。。。沒(méi)明白)
 
好,既然大家都明白了,我就不多說(shuō)了~
(旁白:你妹紙的O O!)

2. 結(jié)束了

最后,關(guān)于Lua的教程,到此告一段落了,本來(lái)我還想寫(xiě)寫(xiě)LuaBind的教程的(非常強(qiáng)大!)。但是,寫(xiě)教程是一件很耗時(shí)的工作,10分鐘能學(xué)會(huì)的知識(shí),也許我要花2個(gè)小時(shí)才能誕生一篇教程。(旁白:好吧,所以大家多些支持他吧。。。)
 
不過(guò),如果大家把這6篇教程吃透,然后再去用Lua在Cocos2d-x里開(kāi)發(fā),就沒(méi)什么大的難度了。(最好再去了解一下LuaBind)
或許,我以后會(huì)接著寫(xiě)Lua的教程,而現(xiàn)在,我要繼續(xù)學(xué)習(xí)Cocos2d-x去了~因?yàn)閷?xiě)教程的緣故(這兩周一直在寫(xiě)狀態(tài)機(jī)的教程以及Lua的教程),我停止了接近兩周的時(shí)間。得抓緊了~不能落后~
那么,祝大家元旦快樂(lè)。
(旁白:你確定你元旦之后會(huì)發(fā)這篇教程么?)
 
然后,希望大家輕輕地動(dòng)一下鼠標(biāo),點(diǎn)一下“頂”~嘿嘿

您可能感興趣的文章:
  • Lua教程(二十):Lua調(diào)用C函數(shù)
  • Lua教程(四):在Lua中調(diào)用C語(yǔ)言、C++的函數(shù)
  • Lua教程(三):C語(yǔ)言、C++中調(diào)用Lua的Table示例
  • C++中調(diào)用Lua函數(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)用詳解

標(biāo)簽:張掖 宜賓 嘉峪關(guān) 武漢 江西 新余 黑龍江 延邊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中調(diào)用C++函數(shù)實(shí)例》,本文關(guān)鍵詞  Lua,中,調(diào)用,C++,函數(shù),實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua中調(diào)用C++函數(shù)實(shí)例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Lua中調(diào)用C++函數(shù)實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 南安市| 乌拉特前旗| 鹿泉市| 浦东新区| 龙南县| 南通市| 西安市| 乐山市| 卢龙县| 突泉县| 武义县| 达孜县| 明星| 苏尼特左旗| 峨山| 永和县| 洪洞县| 济宁市| 永丰县| 梓潼县| 江孜县| 麻城市| 大名县| 南投市| 卫辉市| 福海县| 新蔡县| 金乡县| 鹤岗市| 翁源县| 股票| 张家港市| 云阳县| 青冈县| 黑龙江省| 五家渠市| 宝鸡市| 南城县| 金塔县| 石门县| 会泽县|