亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 開發(fā) > 綜合 > 正文

簡(jiǎn)單談?wù)刲ua和c的交互

2024-07-21 23:05:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

介紹

ch/jiaoben/lua/269335.html">lua和c的親密接觸,靠的是一個(gè)虛擬棧。lua通過這個(gè)虛擬棧來(lái)實(shí)現(xiàn)和c之間值的互傳。棧上的每一個(gè)元素是一個(gè)lua值(nil,number,string...)。

當(dāng)lua調(diào)用c函數(shù)的時(shí)候,這個(gè)函數(shù)會(huì)得到一個(gè)新的棧,這個(gè)棧獨(dú)立于c函數(shù)本身的棧,也獨(dú)立于lua自己的棧。它里面包含了lua要傳給c的所有參數(shù),然后c函數(shù)會(huì)把返回的結(jié)果放入這個(gè)棧中返回給調(diào)用者。

對(duì)于棧的查詢操作,如果按照棧的規(guī)則,只能拿到棧頂?shù)脑?。但這里和常規(guī)的棧有一些差異。就是可以用一個(gè)索引來(lái)指向棧上的任何元素。正數(shù)的索引(1...n)指向從棧底到棧頂元素,1就是最先入棧的元素,n就是棧頂?shù)脑兀?fù)數(shù)的索引(-1...-n)指向從棧頂?shù)綏5椎脑兀?1就是棧頂元素,-n就是最先入棧的元素。通過這兩種索引方式可以很方便的獲取棧中的元素。

基本操作

lua和c之間的交互的橋梁是一個(gè)虛擬棧,這個(gè)虛擬棧在lua的c api中為lua_State,下面的代碼展示了從創(chuàng)建棧,元素入棧,根據(jù)索引獲取棧中元素的值的過程,這也是lua_State的最基本的操作。

lua_State *L = luaL_newstate();//創(chuàng)建一個(gè)新的棧lua_pushstring(L, "muzixiaoxin"); //把一個(gè)字符串壓入棧lua_pushnumber(L, 875);//把一個(gè)整型壓入棧//現(xiàn)在棧內(nèi)有兩個(gè)元素,棧底是字符串"muzixiaoxin",棧頂是整型875//"muzixiaoxin"的索引就是1,或者-2//855的索引就是2,或者-1if (lua_isstring(L, 1)){//判斷棧底的元素是不是字符串  printf("%s/n",lua_tostring(L, 1));//如果是字符串就轉(zhuǎn)換成字符串輸出}if (lua_isnumber(L, -1)){//判斷棧頂元素是不是number類型  printf("%d", lua_tonumber(L, 2));//如果是就轉(zhuǎn)換成number類型輸出}lua_close(L); //記得不需要的時(shí)候要釋放掉

c調(diào)用lua

調(diào)用lua這種情況我見到的比較少,一般都是用lua虛擬機(jī)直接跑腳本。也有一些把lua作為配置文件給c用的。

舉個(gè)例子,新建一個(gè)lua文件test.lua

name = "muzixiaoxin"version = 1003

c需要通過lua c api把這個(gè)文件加載進(jìn)來(lái),然后執(zhí)行,執(zhí)行的結(jié)果存在一個(gè)棧中, 去這個(gè)棧中拿到變量的值。

看下面的c代碼:

lua_State *L = luaL_newstate();int err = luaL_loadfile(L, "test.lua"); //把lua文件加載成代碼塊,只加載不運(yùn)行if (err){  return;}err = lua_pcall(L, 0, 0, 0);//運(yùn)行加載的代碼塊if (err){  return;}lua_getglobal(L, "name"); //把全局變量name的值壓入棧頂printf("%s/n", lua_tostring(L, -1));//取出棧頂元素打印結(jié)果為:muzixiaoxinlua_close(L); //記得不需要的時(shí)候要釋放掉

lua調(diào)用c方法

lua調(diào)用c有些麻煩,要寫一個(gè)固定格式的方法來(lái)供lua調(diào)用。

我們先簡(jiǎn)單的寫個(gè)求和的c方法:

//計(jì)算求和的方法static intsum(int a, int b){  return a + b;}

這個(gè)方法就是求兩個(gè)整型的和。我們要讓lua使用這個(gè)方法,就要先把這個(gè)方法注冊(cè)給lua的狀態(tài)機(jī),但注冊(cè)給lua狀態(tài)機(jī)的方法要求有固定的參數(shù)和固定的返回值,參數(shù)要是是一個(gè)lua虛擬棧,這個(gè)虛擬棧存放著lua傳過來(lái)的參數(shù),lua調(diào)用的返回值也要通過這個(gè)虛擬棧返回給lua,最后的返回值要求是一個(gè)int值,存著返回給lua變量的個(gè)數(shù)。我們看寫好的方法:

//lua調(diào)用的方法static intlsum(lua_State *L){  int a = (int)lua_tonumber(L, -1);//lua調(diào)用的參數(shù)之一  int b = (int)lua_tonumber(L, -2);//lua調(diào)用的參數(shù)之一  lua_pushnumber(L, sum(a, b));//把計(jì)算的加過壓棧  return 1;//返回返回值的個(gè)數(shù)}

下一步是吧lsum這個(gè)方法注冊(cè)給lua狀態(tài)機(jī):

lua_State *L = luaL_newstate();luaL_openlibs(L);//打開L中的所有標(biāo)準(zhǔn)庫(kù),這樣就可以使用print方法lua_register(L, "sum", lsum);//把c函數(shù)lsum注冊(cè)為lua的一個(gè)全局變量sumint err = luaL_dofile(L, "test.lua"); //把lua文件加載成代碼塊,并運(yùn)行if (err){  return;}lua_close(L);

test.lua的內(nèi)容是:

print("1 + 2 = " .. sum(1,2))

最后的輸出結(jié)果:

1+2=3

總結(jié)一下,就是,你要通過一個(gè)中間函數(shù)(像lsum這種)對(duì)lua虛擬棧進(jìn)行操作來(lái)實(shí)現(xiàn)lua調(diào)用c的方法。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
久草视频在线免费| 一区二区三区在线观看视频| 成人区精品一区二区婷婷| www.男人的天堂| 中文字幕2018| 亚洲欧美清纯在线制服| 韩国一区二区在线观看| 精品在线观看国产| 日本女人一区二区三区| 九九综合久久| 久久国产精品72免费观看| 日本不卡在线观看视频| 91在线视频免费播放| 猫咪av永久| 欧美成a人免费观看久久| 久久久久久久久久久久久女过产乱| av蓝导航精品导航| 成全视频全集| 麻豆最新免费在线视频| 麻豆精品视频入口| 夜夜骑天天操| 中文字幕av网| 欧美日本成人| 日韩在线观看网站| 亚洲人成网站在线播放2019| 久久一区二区三区四区| 97在线视频一区| 日韩三级精品电影久久久| 可以免费观看av的网站| 亚洲自拍偷拍第一页| 日韩成人在线网站| 91露出在线| 99国产精品国产精品久久| 色综合五月天| 国产精品视频免费观看| 丁香花高清电影在线观看完整版| 91九色蝌蚪国产| 欧洲精品在线一区| 亚洲一区二区网站| 亚洲精品www久久久| 国产精品高潮久久久久无| 国产又粗又猛又黄又爽无遮挡| 伊人网av在线| 欧美被狂躁喷白浆精品| 亚洲一区在线日韩在线深爱| 爽好多水快深点欧美视频| 国产专区第一页| 欧美酷刑日本凌虐凌虐| 欧美一区二区三区四区久久| 久久久久久综合网| 亚洲美女电影在线| 色天天久久综合婷婷女18| 黄页大全在线免费观看| 黄动漫在线观看| 视频一区视频二区中文字幕| 中文字幕日韩精品在线| bt欧美亚洲午夜电影天堂| 2019日本中文字幕| 无罩大乳的熟妇正在播放| 男人的天堂avav| 欧美日本精品在线| 亚洲精品视频在线观看网站| 国产精品乱码一区二区三区视频| 一区二区三区视频国产日韩| 超碰在线人人爱| 欧美va视频| 欧美色视频一区二区三区在线观看| 色播视频在线观看| 99热在线播放| 青青在线视频免费| 久久草.com| 亚洲国产精品一区二区www在线| 国产亚洲久一区二区| 婷婷伊人综合中文字幕| 日本va欧美va精品发布| 久久女同互慰一区二区三区| 99久久久久久久| a在线播放不卡| 亚洲色图视频在线观看| 天堂网视频在线观看| 亚洲精品一区二区三区福利| yellow视频在线观看一区二区| 中文字幕无线码| 中国一级黄色录像| 国产视频在线看| 精品国产一区一区二区三亚瑟| 九九热播视频在线精品6| 免费看大片爽| 伊人亚洲精品| 九色porny91| 五月激情五月婷婷| 91九色蝌蚪porny| 欧美69精品久久久久久不卡| 北条麻妃亚洲一区| 欧美一区二区成人6969| 蜜桃视频在线观看网站| 一级片视频免费| 国产免费av电影| 欧美一区二区三区视频免费播放| 国产精品精华液网站| 色欲欲www成人网站| 亚洲女同一区二区| 日韩成人免费av| 曰本人一级毛片免费完整视频| 精品视频在线播放| 精品9999| 久草热久草在线频| 国产欧美一区二区在线| 国产精品一色哟哟| 日韩av.com| 日日躁夜夜躁人人揉av五月天| 国产精品理论片| 一女被多男玩喷潮视频| 国产一区二区黑人欧美xxxx| 日本在线播放一区二区三区| 战狼4完整免费观看在线播放版| 久久久久国产免费免费| 国产成人亚洲欧美电影| 九色成人在线| 久久99久久久| 中文字幕一区二区中文字幕| 男人的天堂在线视频| 手机成人av在线| 91精品久久久久久久| av漫画在线观看| 米奇777在线影院线| a√在线中文网新版址在线| 国产精品劲爆视频| 中文字幕在线不卡一区| 亚洲wwwwww| 精品一区二区三区视频| 一区二区三区在线电影| 日韩精品乱码av一区二区| 亚洲精品国产久| 最新日韩av在线| 国产精品呻吟| 中文字幕1区2区3区| 亚洲黄色免费在线观看| 岛国在线视频| a级大片在线观看| 国产精品一区二区免费福利视频| 女人在下体塞跳蛋在线观看| 91一区二区在线观看| 中国一级片在线观看| 国模吧精品视频| 成人毛片免费在线观看| 欧美日韩水蜜桃| 成人影院www在线观看| 蜜乳av一区| 久久久极品av| 69ww免费视频播放器| 欧美亚洲自拍偷拍| 国产精品乱码一区二三区小蝌蚪| 五月天激情婷婷| 第一中文字幕在线| 懂色av蜜桃av| 大胆欧美人体视频| 欧美日本中文| 欧美日韩亚洲综合在线| 中文成人在线| 97涩在线观看视频| 99精品在线免费在线观看| 欧美三日本三级少妇三99| 成人免费一区二区三区| 国产免费一区二区三区在线观看| 69精品久久久| 你懂的免费在线观看| 日本卡一卡2卡3卡4精品卡网站| 色综合影院在线| 韩国三级视频在线观看| 久久精品一区二区三区四区五区| 欧美手机在线| 日韩欧美综合在线| 欧美一区一区| 91精品国自产在线偷拍蜜桃| 亚洲资源在线播放| 韩国女同性做爰三级| 这里视频有精品| 美女mm1313爽爽久久久蜜臀| 国产一区二区三区色淫影院| 天天综合网天天综合色| 国内成人免费视频| 91免费人成网站在线观看18| 精品国产鲁一鲁一区二区三区| 黄色片在线免费看| 免费大片黄在线观看视频网站| 特级片在线观看| 欧洲免费在线视频| 国产精品久久久久久久久免费桃花| 91在线观看网站| 亚洲一区二区视频在线观看| 欧美日韩破处视频| 中国国产一级毛片| 久久亚洲国产精品成人av秋霞| 91老师片黄在线观看| 欧美激情a在线| 中文字幕一区二区三区人妻在线视频| 日本一本在线视频| 狠狠色一日本高清视频| 综合干狼人综合首页| 99热免费精品在线观看| 久草在线在线视频| 亚洲网站啪啪| 青青草视频网站| 亚洲精品蜜桃乱晃| 91久久在线视频| 9lporm自拍视频区在线| 亚洲成人中文在线| 免费高清在线观看电视| 欧洲精品码一区二区三区免费看| 欧美日韩国内| 蜜桃视频在线观看www| 91麻豆精品91久久久久同性| www.youjizz.com在线| 久久影院电视剧免费观看| 亚洲第一福利网| 欧美日韩欧美一区二区| 日本高清久久| 日韩激情啪啪| 免费福利视频网站| 国产精品成人在线观看| 欧美激情一区在线观看| 国产精品视频免费观看| 99香蕉久久| 国产精品伦一区二区三区级视频频| 精品国产欧美一区二区五十路| 美女视频网站久久| 免费看三级黄色片| 91精品国产91久久久久久密臀| 亚洲欧美日韩天堂| 亚洲精品**不卡在线播he| 日韩亚洲在线视频| 日韩国产欧美精品一区二区三区| 欧美视频久久| 午夜精品久久久99热福利| 国产又大又长又粗又黄| 91精品国产乱码久久蜜臀| 高清全集视频免费在线| 久久精品免费在线| 中文字幕乱视频| 蜜臀aⅴ国产精品久久久国产老师| 天堂在线国产| 欧美r级在线观看| 天天影视涩香欲综合网| 欧美日韩国产影片| 四虎免费视频| 极品尤物久久久av免费看| 亚洲人人夜夜澡人人爽| 日本午夜精品一区二区三区电影| 91久久偷偷做嫩草影院电| 久热中文字幕精品视频在线| 美女被内谢流白浆高视频| 国产精品∨欧美精品v日韩精品| 91丨九色丨黑人外教| 天堂av网在线| 男女av一区三区二区色多| 国产精品影视天天线| 久久中文字幕导航| 亚洲精品丝袜日韩| 久久亚洲资源中文字| 欧美色成人综合| 欧美日本啪啪无遮挡网站| 成人h在线播放| 国产 福利 在线| 一本一道久久a久久精品逆3p| 国产精品一区二区三区四区五区| 蜜桃精品wwwmitaows| 亚洲精品极品| 在线观看亚洲精品福利片| 黄色网址入口| 又大又硬又爽免费视频| 波多野结衣av一区二区全免费观看| 天天干天天色天天| 国产精品97在线| 91高清在线视频| 国产+成+人+亚洲欧洲在线| 男男gay无套免费视频欧美| 在线观看国产视频| 欧洲一区二区在线观看| 91麻豆精品国产91久久久资源速度| 99在线观看精品视频| 亚洲经典视频在线观看| 亚洲va欧美va在线观看| 特黄aaaaaaaaa真人毛片| 希岛爱理一区二区三区| 亚洲欧美日韩一区成人| 黄色国产在线| 理论在线观看| 欧美日韩国产经典色站一区二区三区| 丁香花视频在线观看| 秋霞国产精品| 国产日韩欧美大片| 在线观看av一区| 一区二区三区在线不卡| 日韩中文字幕一区二区| 中国xxxx视频播放50| 久久综合久久网| 免费永久网站黄欧美| 婷婷色在线播放| 精品麻豆视频| 日本黄色免费在线观看| 最近中文字幕2019第二页视频| 日本泡妞xxxx免费视频软件| 欧美国产精品久久| 国产一区二区在线观看免费播放| 亚洲调教欧美在线| 91caoporn在线| 亚洲成人网在线观看| 亚洲人成人一区二区在线观看| 精品一成人岛国片在线观看| hitomi一区二区三区精品| 国产特级淫片高清视频| 免费三级毛片| 国产欧美日韩高清| 欧美性受黑人性爽| 日本不卡免费高清视频| 1313精品午夜理伦电影| 午夜伦理在线| 成人黄色免费| 国产精品夜夜夜爽张柏芝| 久久精品亚洲乱码伦伦中文| 国产美女一区二区三区| 爆操欧美孕妇| 免费污网站在线观看| 日韩乱码在线视频| 免费网站在线观看人| 在线免费观看麻豆| 中文字幕中文在线|