青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,請(qǐng)移步
叫我abc

常用鏈接

留言簿(12)

隨筆分類(lèi)

我的博客

搜索

  •  

積分與排名

  • 積分 - 305531
  • 排名 - 84

最新評(píng)論

閱讀排行榜

1.LUA初始化

lua_State* ls = lua_open();

luaL_loadlibs( ls ); //裝載基本環(huán)境,推薦

lua_close( ls ); //退出程序時(shí)執(zhí)行

2.裝載模塊

2.1模塊聲明

l  模塊名稱不依賴于文件名

l  在每一個(gè)腳本文件內(nèi)使用module關(guān)鍵字將腳本里的函數(shù)和變量納入特定模塊

比如:module( “ui_chat” , package.seeall )

包含了這一句的腳本文件內(nèi)的函數(shù)和變量均屬于ui_chat模塊

l  不同的腳本文件可以聲明為相同的模塊,他們會(huì)合起來(lái)

l  相同文件名的腳本(不同路徑)可以聲明為不同的模塊

l  一個(gè)腳本文件內(nèi)可以寫(xiě)多個(gè)module聲明,因此它的內(nèi)容可以歸屬到多個(gè)模塊(沒(méi)有必要這么做,因?yàn)榭缒K調(diào)用非常簡(jiǎn)單)

2.2入口腳本

不可能將所有模塊的裝載寫(xiě)入程序,因此要建立一個(gè)init.lua腳本,作為裝載其他模塊的唯一入口。

//為了無(wú)差別的處理普通文件和打包文件,不使用luaL_dofile

string buff( “init.lua” );

If ( luaL_dostring( ls , buff.c_str() ) != 0 )

{

         printf( “%s” , lua_tostring( ls , -1 ) );

}

2.3裝載所有模塊

可以在init.lua中,裝載其他模塊。裝載使用require(path),其中path腳本的路徑,比如說(shuō)

a/b/c,也可以寫(xiě)成a.b.c

require”a/b/c”

require”a.b.c”

模塊的裝載目錄在package.path中指定

 

3模塊間相互調(diào)用

因?yàn)槊總€(gè)模塊都注冊(cè)到全局表下,而全局表所有模塊可見(jiàn)。因此調(diào)用其他模塊的函數(shù)的形式就是模塊名+函數(shù)名。如:

ui_map.build_mark()

4C中調(diào)用lua函數(shù)

C中調(diào)用lua函數(shù)十分簡(jiǎn)單,就是過(guò)程有些繁瑣。如果打算好好處理的話,還需要注意錯(cuò)誤處理。比如要調(diào)用ui_main.enter( int  param )

lua_getglobal( ls , “ui_main” )

lua_getfield( ls ,  -1 , “main_enter” );

lua_remove( ls , -2 );

lua_pushnumber( ls , param );

lua_pcall( ls , 1 , 0 ,0 );

相信有很多lua c++wrapper可以更輕易的做到這些事情。

5載入打包文件

lua肯定不知道如何載入我們的打包文件,但是他的require機(jī)制提供了一個(gè)入口,允許我們定義一個(gè)loader,來(lái)載入require所請(qǐng)求的文件。

因此載入打包文件的loader大概可以這樣實(shí)現(xiàn):通過(guò)路徑名,從打包文件中讀取數(shù)據(jù),然后將數(shù)據(jù)交給loadstring或者loadbuffer

function MyPackLoader( moduleName )

         return loadstring( G_GetPackData( moduleName ) );

end

只要我們將MyPackLoader放進(jìn)package.loaders即可

6注冊(cè)C++lua

存在一些lua c++wrapper,可以容易的將程序中的類(lèi)和函數(shù)注冊(cè)到lua環(huán)境中,不過(guò)我比較懶,沒(méi)有嘗試這些。

我嘗試的是tolua++,一個(gè)自動(dòng)化工具,他可以通過(guò)讀取定義文件,直接生成類(lèi)和函數(shù)的注冊(cè)代碼。

定義文件可以單獨(dú)書(shū)寫(xiě),聲明需要注冊(cè)的類(lèi)和函數(shù)。但是我不是很贊成這種方式,因?yàn)樾枰秸嬲念^文件和定義文件。

另一種就是可以在頭文件中增加特定的注釋,標(biāo)記出需要注冊(cè)的函數(shù),比如: 

class A : public B { //tolua_export

         //tolua_begin

         void func();

         void func2();

         //tolua_end

}; // tolua_export

由這些tolua_xxx的注釋,直接定義了注冊(cè)區(qū)域。

 

>tolua++ -o classbind.cpp class.h

 

PS:tolua++支持繼承和虛函數(shù)

7debug lua

lua提供了比較完善的debug接口的,包括單步執(zhí)行、堆棧、變量查看。

為了將這些東西嵌入到自己的程序中,還需要做些工作。

 

簡(jiǎn)單情況下,我們可以通過(guò)debug.sethook監(jiān)聽(tīng)到函數(shù)的調(diào)用、函數(shù)的返回,以及每一個(gè)語(yǔ)句的執(zhí)行。當(dāng)我們監(jiān)聽(tīng)到感興趣的內(nèi)容之后,可以進(jìn)入一個(gè)while(true),在這里通過(guò)執(zhí)行lua語(yǔ)句查看感興趣的內(nèi)容,像gdb一樣。

 

此外,還有兩個(gè)庫(kù)可以提供嵌入的debug支持(我沒(méi)有試驗(yàn))。

1.         luaEdit,這是一個(gè)獨(dú)立運(yùn)行的IDE,但是他提供了一個(gè)dll,允許我們將他的IDE嵌入到程序中,調(diào)試指定的腳本。luaEdit目前尚無(wú)遠(yuǎn)程調(diào)試功能

2.         remdebug,這是一個(gè)遠(yuǎn)程調(diào)試庫(kù),其目的就是為了嵌入其他程序而開(kāi)發(fā)的,調(diào)試指令似乎與gdb也很相近。他需要luaSocketluaFileSystem的支持。

posted on 2008-06-12 22:18 LOGOS 閱讀(3778) 評(píng)論(2)  編輯 收藏 引用

FeedBack:
# re: 使用LUA 2008-06-12 22:27 陳梓瀚(vczh)
直接讀代碼然后生成注冊(cè)代碼啊……好主意,以后我有空也做一個(gè)給我自己的腳本用。一直覺(jué)得寫(xiě)C++類(lèi)的wrapper插件很麻煩。  回復(fù)  更多評(píng)論
  
# re: 使用LUA 2008-06-18 21:41 李侃
收下了,感謝你,鄰居  回復(fù)  更多評(píng)論
  

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美呦呦网站| 国产欧美日韩一区二区三区在线观看| 免费成人av| 久久综合久久综合久久综合| 久久久91精品国产| 久久久久久自在自线| 裸体女人亚洲精品一区| 欧美激情精品久久久| 99视频国产精品免费观看| 一区二区三区日韩精品| 亚欧成人在线| 久久精品亚洲一区二区三区浴池 | 99精品国产福利在线观看免费| 日韩视频中文字幕| 亚洲欧美日韩爽爽影院| 久久综合狠狠| 欧美日韩在线电影| 国产综合婷婷| 在线视频亚洲一区| 猛男gaygay欧美视频| 亚洲看片免费| 久久精品观看| 欧美日韩国产精品自在自线| 国产婷婷色一区二区三区四区| 亚洲高清一区二区三区| 亚洲尤物精选| 欧美成人一品| 亚洲一区二区在线| 欧美国产日韩xxxxx| 国产小视频国产精品| 一本色道综合亚洲| 久久躁狠狠躁夜夜爽| 一本大道久久精品懂色aⅴ| 久久久久国产免费免费| 国产精品久久久久9999吃药| 亚洲国产高潮在线观看| 久久不见久久见免费视频1| 亚洲国产专区| 性色av一区二区三区在线观看| 欧美大片一区二区三区| 日韩视频免费在线| 久久免费精品视频| 国产精品永久免费在线| 在线视频亚洲| 亚洲精品少妇网址| 鲁大师影院一区二区三区| 国产欧美大片| 销魂美女一区二区三区视频在线| 亚洲国产一区视频| 免费观看国产成人| 亚洲第一视频网站| 久久精品人人做人人爽电影蜜月| 亚洲小视频在线| 欧美视频中文字幕| 亚洲私人影院在线观看| 亚洲精品激情| 欧美日韩岛国| 亚洲天堂偷拍| 亚洲深夜av| 国产精品无人区| 午夜在线视频观看日韩17c| avtt综合网| 国产精品美女xx| 久久国产日韩欧美| 欧美一区三区三区高中清蜜桃| 国产午夜精品福利| 久久婷婷久久| 欧美77777| 中文有码久久| 亚洲视屏在线播放| 国产伦一区二区三区色一情| 午夜精品久久久久久久蜜桃app| 亚洲一区二区在线免费观看| 国产欧美精品日韩| 久热这里只精品99re8久| 久久综合九色九九| 一本久久综合| 亚洲综合欧美日韩| 伊人蜜桃色噜噜激情综合| 欧美成人免费网站| 欧美人与禽性xxxxx杂性| 亚洲一区二区三区高清不卡| 亚洲一区欧美激情| 亚洲成色777777女色窝| 亚洲三级电影全部在线观看高清| 欧美偷拍另类| 久久综合影视| 欧美日韩免费一区二区三区| 午夜精品国产| 久久这里只有精品视频首页| 一区二区三区免费看| 亚洲欧美国产va在线影院| 一区二区自拍| 一区二区三区国产精品| 国产有码在线一区二区视频| 欧美激情一区| 国产人久久人人人人爽| 欧美激情视频给我| 国产精品一区在线观看| 亚洲丶国产丶欧美一区二区三区 | 国产精品一区二区三区四区| 卡通动漫国产精品| 欧美午夜电影网| 美女脱光内衣内裤视频久久网站| 欧美激情一区二区三区成人 | 先锋影音久久久| 欧美jizz19性欧美| 欧美一区二区国产| 欧美日韩国产一区精品一区| 老司机一区二区| 国产精品成人久久久久| 欧美激情视频免费观看| 国产一区二区成人久久免费影院| 亚洲激情av| 伊人婷婷欧美激情| 欧美一区二区福利在线| 亚洲午夜激情网站| 欧美精品观看| 欧美大片在线观看一区| 国产亚洲一二三区| 亚洲一区二区三区免费视频| 99re6这里只有精品| 美女啪啪无遮挡免费久久网站| 久久福利精品| 国产女主播一区二区| 亚洲少妇自拍| 亚洲自啪免费| 国产精品v欧美精品v日韩| 91久久中文| 日韩一级黄色av| 欧美黑人多人双交| 欧美高清视频一区二区| 在线日韩电影| 美女视频黄 久久| 免费短视频成人日韩| 激情视频一区二区| 久久另类ts人妖一区二区| 久久噜噜亚洲综合| 加勒比av一区二区| 久久只有精品| 亚洲经典视频在线观看| 一区二区欧美日韩视频| 欧美午夜不卡在线观看免费| 亚洲午夜激情免费视频| 欧美一区二区在线免费观看| 国产亚洲精品久久久久动| 久久国产欧美| 久久久亚洲人| 亚洲激情偷拍| 欧美日韩在线三区| 亚洲一区二区在线播放| 久久国产精品久久w女人spa| 国语对白精品一区二区| 久久日韩粉嫩一区二区三区| 欧美黄色片免费观看| 一本一本久久a久久精品牛牛影视| 欧美日韩国产一级| 亚洲免费视频中文字幕| 麻豆视频一区二区| 一区二区三区.www| 国产日韩欧美一区| 欧美1区3d| 午夜精品电影| 亚洲黄色大片| 久久国产欧美精品| av成人毛片| 国内自拍一区| 欧美日韩xxxxx| 欧美国产视频一区二区| 亚洲精品一二三区| 国产精品久久久久久av下载红粉 | 日韩视频中文| 久久婷婷蜜乳一本欲蜜臀| 亚洲免费观看高清完整版在线观看| 国产精品v欧美精品v日本精品动漫| 欧美一区二区三区在线免费观看| 欧美激情2020午夜免费观看| 亚洲影视九九影院在线观看| 精品91视频| 国产精品区二区三区日本| 麻豆成人在线观看| 午夜性色一区二区三区免费视频 | 久久精品国产免费看久久精品| 亚洲人成小说网站色在线| 欧美综合第一页| 亚洲最新在线| 亚洲国产精品精华液2区45| 国产精品久久久久久户外露出| 久久天天综合| 欧美一二三视频| 9人人澡人人爽人人精品| 欧美丰满高潮xxxx喷水动漫| 欧美在线视频免费播放| 在线亚洲欧美视频| 亚洲欧洲一区二区三区| 国产在线高清精品| 国产精品亚洲欧美| 欧美午夜精品理论片a级按摩| 欧美第一黄色网| 久久伊伊香蕉|