锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美精品丝袜久久久中文字幕 ,久久精品成人,欧美一级久久久久久久大http://www.shnenglu.com/tx7do/category/2494.html鍗辨満鎰熸槸涓縐嶅己澶у墠榪涚殑鍔ㄥ姏錛?lt;/br> GMail/GTalk: yanglinbo#google.com;</br> MSN/Email: tx7do#yahoo.com.cn;</br> QQ: 3 0 3 3 9 6 9 2 0 .zh-cnMon, 19 May 2008 14:05:59 GMTMon, 19 May 2008 14:05:59 GMT60LuaState (a Lua Wrapper) 4.1 Alpha Distributionhttp://www.shnenglu.com/tx7do/archive/2006/08/20/11492.html鏉ㄧ布娉?/dc:creator>鏉ㄧ布娉?/author>Sun, 20 Aug 2006 05:26:00 GMThttp://www.shnenglu.com/tx7do/archive/2006/08/20/11492.htmlhttp://www.shnenglu.com/tx7do/comments/11492.htmlhttp://www.shnenglu.com/tx7do/archive/2006/08/20/11492.html#Feedback0http://www.shnenglu.com/tx7do/comments/commentRss/11492.htmlhttp://www.shnenglu.com/tx7do/services/trackbacks/11492.html闃呰鍏ㄦ枃

]]>
閫氳繃渚嬪瓙瀛︿範Lua_1(杞?http://www.shnenglu.com/tx7do/archive/2006/08/20/11490.html鏉ㄧ布娉?/dc:creator>鏉ㄧ布娉?/author>Sun, 20 Aug 2006 04:58:00 GMThttp://www.shnenglu.com/tx7do/archive/2006/08/20/11490.htmlhttp://www.shnenglu.com/tx7do/comments/11490.htmlhttp://www.shnenglu.com/tx7do/archive/2006/08/20/11490.html#Feedback0http://www.shnenglu.com/tx7do/comments/commentRss/11490.htmlhttp://www.shnenglu.com/tx7do/services/trackbacks/11490.html鏈枃浣滆呮槸OGDEV鐨凥ACK杈句漢


閫氳繃渚嬪瓙瀛︿範Lua(1) ---- Hello World

1.鍓嶈█

鍋舵渶榪戝湪瀛︿範Lua, 鎵浠ュ啓鍑哄績寰楀拰澶у鍏變韓, 浜夊彇涓澶╁啓涓綃? 鍢垮樋.
鎵嶅紑濮嬪鎵浠ュ唴瀹瑰緢嫻? 甯屾湜澶у鍖呮兜.

Lua鏄竴縐嶅畬鍏ㄥ厤璐圭殑鑴氭湰璇█, 鍙互鍜孋/C++璇█绱у瘑緇撳悎,
瀹冪殑瀹樻柟緗戠珯鍦?a target="_blank">http://www.lua.org./ 鍦ㄧ綉绔欎笂鍙互涓嬭澆鍒發ua鐨勬簮鐮? 娌℃湁鍙?br />鎵ц鐗堟湰, 涓嶈繃涓嶇敤鎷呭績, 鍥犱負lua婧愮爜鍙互鍦ㄤ換浣曚竴縐岰/C++鐨勭紪璇戝櫒涓婄紪璇?

濡傛灉瑕佸涔燣ua, 瀹樻柟緗戠珯涓婄殑Reference鏄繀澶囩殑錛屼笂闈㈡湁姣忎釜鍛戒護鐨勭敤娉曪紝闈炲父璇︾粏銆?br />鍙傝冩墜鍐?http://www.lua.org/manual/5.0/
浣滆呭啓鐨凱rogramming in Lua http://www.lua.org/pil/

2.緙栬瘧
濡傛灉鐢ㄧ殑VC6, 鍙互涓嬭澆鎵闇鐨刾roject鏂囦歡,鍦板潃鍦?br />http://sourceforge.net/project/showfiles.php?group_id=32250&package_id=115604
VSNET2003鍙互涓嬭澆榪欎釜sln鏂囦歡http://home.comcast.net/~vertigrated/lua/vs7.zip
鍋剁敤鐨勬槸cygwin鍜宭inux, 鎵撳叆浠ヤ笅鍛戒護鍗沖彲,
tar -zxvf lua-5.0.2.tar.gz
cd lua-5.0.2
sh ./configure
make
榪欐牱灝監K浜嗐?br />涓轟簡浠ュ悗浣跨敤鏂逛究錛屾渶濂芥妸bin鐩綍鍔犲叆鍒皃ath閲岄潰銆?br />
3."Hello, world!"
鐜板湪寮濮嬪伓浠殑絎竴涓皬紼嬪簭"Hello, world!"
鎶婁互涓嬬▼搴忔墦鍏ユ枃浠秂01.lua

渚?:e01.lua
-- Hello World in Lua
print("Hello World.")

Lua鏈変袱縐嶆墽琛屾柟寮忥紝涓縐嶆槸宓屽叆鍒癈紼嬪簭涓墽琛岋紝榪樻湁涓縐嶆槸鐩存帴浠庡懡浠よ鏂瑰紡涓嬫墽琛屻?br />榪欓噷涓轟簡璋冭瘯鏂逛究錛岄噰鐢ㄧ浜岀鏂瑰紡錛屾墽琛屽懡浠?lua e01.lua

杈撳嚭緇撴灉搴旇鏄細
Hello World.

4.紼嬪簭璇存槑
絎竴琛?-- Hello World in Lua
榪欏彞鏄敞閲婏紝鍏朵腑--鍜孋++涓殑//鎰忔濇槸涓鏍風殑
絎簩琛?print("Hello World.")
璋冪敤lua鍐呴儴鍛戒護print錛岃緭鍑?Hello World."瀛楃涓插埌灞忓箷錛孡ua涓殑瀛楃涓插叏閮ㄦ槸鐢?鎷搗鏉ョ殑銆?br />榪欎釜鍛戒護鏄竴涓嚱鏁扮殑璋冪敤錛宲rint鏄痩ua鐨勪竴涓嚱鏁幫紝鑰?Hello World."鏄痯rint鐨勫弬鏁般?br />
5.璇曡瘯鐪?br />鍦↙ua涓湁涓嶅皯瀛楃涓茬殑澶勭悊鎿嶄綔錛屾湰嬈$殑璇懼悗璇曡瘯鐪嬬殑鍐呭灝辨槸錛屾壘鍑鴻繛鎺ヤ袱涓瓧絎︿覆鐨勬搷浣滐紝
騫朵笖print鍑烘潵銆?/span>


]]>
Lua涓皟鐢–/C++鍑芥暟 (杞?http://www.shnenglu.com/tx7do/archive/2006/08/20/11489.html鏉ㄧ布娉?/dc:creator>鏉ㄧ布娉?/author>Sun, 20 Aug 2006 04:57:00 GMThttp://www.shnenglu.com/tx7do/archive/2006/08/20/11489.htmlhttp://www.shnenglu.com/tx7do/comments/11489.htmlhttp://www.shnenglu.com/tx7do/archive/2006/08/20/11489.html#Feedback0http://www.shnenglu.com/tx7do/comments/commentRss/11489.htmlhttp://www.shnenglu.com/tx7do/services/trackbacks/11489.html涓婃鍋惰鍒頒粠C/C++涓皟鐢↙ua鐨勫嚱鏁? 鐒跺悗灝辨湁鏈嬪弸闂粠Lua涓浣曡皟鐢–/C++鐨?br />鍑芥暟, 鎵浠ュ伓浠繖嬈″氨鏉ヨ璇磋繖涓棶棰? 棣栧厛鍋朵滑浼氬湪C++涓緩绔嬩竴涓嚱鏁? 鐒跺悗
鍛婄煡Lua鏈夎繖涓嚱鏁? 鏈鍚庡啀鎵ц瀹? 鍙﹀, 鐢變簬鍑芥暟涓嶆槸鍦↙ua涓畾涔夌殑, 鎵浠?br />鏃犳硶紜畾鍑芥暟鐨勬紜? 鍙兘鍦ㄨ皟鐢ㄨ繃紼嬩腑浼氬嚭閿? 鍥犳鍋朵滑榪樹細璇磋Lua鍑洪敊澶?br />鐞嗙殑闂.

2.Lua涓皟鐢–鍑芥暟
鍦╨ua涓槸浠ュ嚱鏁版寚閽堢殑褰㈠紡璋冪敤鍑芥暟, 騫朵笖鎵鏈夌殑鍑芥暟鎸囬拡閮藉繀欏繪弧瓚沖涓嬫縐?br />綾誨瀷:
typedef int (*lua_CFunction) (lua_State *L);

涔熷氨鏄, 鍋朵滑鍦–++涓畾涔夊嚱鏁版椂蹇呴』浠ua_State涓哄弬鏁? 浠nt涓鴻繑鍥炲兼墠鑳?br />琚獿ua鎵璋冪敤. 浣嗘槸涓嶈蹇樿浜? 鍋朵滑鐨刲ua_State鏄敮鎸佹爤鐨? 鎵浠ラ氳繃鏍堝彲浠?br />浼犻掓棤絀蜂釜鍙傛暟, 澶у皬鍙彈鍐呭瓨澶у皬闄愬埗. 鑰岃繑鍥炵殑int鍊間篃鍙槸鎸囪繑鍥炲肩殑涓暟
鐪熸鐨勮繑鍥炲奸兘瀛樺偍鍦╨ua_State鐨勬爤涓? 鍋朵滑閫氬父鐨勫仛娉曟槸鍋氫竴涓獁rapper, 鎶?br />鎵鏈夐渶瑕佽皟鐢ㄧ殑鍑芥暟閮絯rap涓涓? 榪欐牱灝卞彲浠ヨ皟鐢ㄤ換鎰忕殑鍑芥暟浜?

涓嬮潰榪欎釜渚嬪瓙鏄竴涓狢++鐨刟verage()鍑芥暟, 瀹冨皢灞曠ず濡備綍鐢ㄥ涓弬鏁板茍榪斿洖澶氫釜鍊?br />
渚媏14.cpp
#include <stdio.h>

extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}

/* the Lua interpreter */
lua_State* L;

static int average(lua_State *L)
{
/* get number of arguments */
int n = lua_gettop(L);
double sum = 0;
int i;

/* loop through each argument */
for (i = 1; i <= n; i++)
{
/* total the arguments */
sum += lua_tonumber(L, i);
}

/* push the average */
lua_pushnumber(L, sum / n);

/* push the sum */
lua_pushnumber(L, sum);

/* return the number of results */
return 2;
}

int main ( int argc, char *argv[] )
{
/* initialize Lua */
L = lua_open();

/* load Lua base libraries */
lua_baselibopen(L);

/* register our function */
lua_register(L, "average", average);

/* run the script */
lua_dofile(L, "e15.lua");

/* cleanup Lua */
lua_close(L);

return 0;
}

渚媏15.lua
-- call a C++ function

avg, sum = average(10, 20, 30, 40, 50)

print("The average is ", avg)
print("The sum is ", sum)


紼嬪簭璇存槑:
* lua_gettop()鐨勪綔鐢ㄦ槸榪斿洖鏍堥《鍏冪礌鐨勫簭鍙? 鐢變簬Lua鐨勬爤鏄粠1寮濮嬬紪鍙風殑,
鎵浠ユ爤欏跺厓绱犵殑搴忓彿涔熺浉褰撲簬鏍堜腑鐨勫厓绱犱釜鏁? 鍦ㄨ繖閲? 鏍堜腑鍏冪礌鐨勪釜鏁板氨
鏄紶鍏ョ殑鍙傛暟涓暟.
* for寰幆璁$畻鎵鏈変紶鍏ュ弬鏁扮殑鎬誨拰. 榪欓噷鐢ㄥ埌浜嗘暟鍊艱漿鎹ua_tonumber().
* 鐒跺悗鍋朵滑鐢╨ua_pushnumber()鎶婂鉤鍧囧煎拰鎬誨拰push鍒版爤涓?
* 鏈鍚? 鍋朵滑榪斿洖2, 琛ㄧず鏈変袱涓繑鍥炲?
* 鍋朵滑铏界劧鍦–++涓畾涔変簡average()鍑芥暟, 浣嗗伓浠殑Lua紼嬪簭騫朵笉鐭ラ亾, 鎵浠ラ渶
瑕佸湪main鍑芥暟涓姞鍏?br />
聽 /* register our function */
lua_register(L, "average", average);

榪欎袱琛岀殑浣滅敤灝辨槸鍛婅瘔e15.lua鏈塧verage()榪欐牱涓涓嚱鏁?
* 榪欎釜紼嬪簭鍙互瀛樻垚cpp涔熷彲浠ュ瓨鎴恈, 濡傛灉浠?c涓烘墿灞曞悕灝變笉闇瑕佸姞extern "C"

緙栬瘧鐨勬柟娉曞伓浠笂嬈¤榪囦簡, 鏂規硶鐩稿悓.
e15.lua鎵ц鐨勬柟娉曞彧鑳界敤涓婁緥涓殑C++涓墽琛? 鑰屼笉鑳界敤鍛戒護琛屾柟寮忔墽琛?

3.閿欒澶勭悊
鍦ㄤ笂渚嬩腑, 鍋朵滑娌℃湁瀵逛紶鍏ョ殑鍙傛暟鏄惁涓烘暟瀛楄繘琛屾嫻? 榪欐牱鍋氫笉濂? 鎵浠ヨ繖閲屽伓
浠啀鍔犱笂閿欒澶勭悊鐨勭墖鏂?

鎶婅繖孌靛姞鍦╢or寰幆涔嬪唴:
if (!lua_isnumber(L, i)) {
lua_pushstring(L, "Incorrect argument to 'average'");
lua_error(L);
}
榪欐鐨勪綔鐢ㄥ氨鏄嫻嬩紶鍏ョ殑鏄惁涓烘暟瀛?

鍔犱笂榪欐涔嬪悗, 鍋朵滑debug鐨勬椂鍊欏氨浼氱畝鍗曡澶? 瀵逛簬緇撳悎涓ょ璇█鐨勭紪紼? 瀹冧滑涔?br />闂翠紶閫掓暟鎹殑姝g‘鎬ф嫻嬫槸闈炲父閲嶈鐨?

榪欓噷鏈夊埆浜哄啓濂界殑渚嬪瓙:
VC鐨?http://tonyandpaige.com/tutorials/luaavg.zip
Linux鐨?http://tonyandpaige.com/tutorials/luaavg.tar.gz

鑷蟲, Lua涓嶤鐨勭粨鍚堝氨鍩烘湰璁插畬浜? 涓嬫鍋惰寮濮嬭璇碙ua涓庨潰鍚戝璞?
浣嗘槸鍋惰嚜宸辮繕娌℃湁瀛﹀畬, 鎵浠ュぇ瀹跺彲鑳借澶氱瓑涓ゅぉ浜? Sorry!


]]>
Lua 鑴氭湰 C++ 灝佽搴?LuaWrapperhttp://www.shnenglu.com/tx7do/archive/2006/08/20/11488.html鏉ㄧ布娉?/dc:creator>鏉ㄧ布娉?/author>Sun, 20 Aug 2006 04:52:00 GMThttp://www.shnenglu.com/tx7do/archive/2006/08/20/11488.htmlhttp://www.shnenglu.com/tx7do/comments/11488.htmlhttp://www.shnenglu.com/tx7do/archive/2006/08/20/11488.html#Feedback0http://www.shnenglu.com/tx7do/comments/commentRss/11488.htmlhttp://www.shnenglu.com/tx7do/services/trackbacks/11488.html杞澆錛?http://www.d2-life.com/LBS/blogview.asp?logID=41

銆銆浣跨敤Lua浣滆剼鏈紝涓昏鏄洜涓哄畠灝忓閥鐜茬彂錛堜綋縐皬錛岃繍琛屽揩錛夛紝鑰屼笖瀹冪殑璇硶鍙堟瘮杈冪畝鍗曟槑浜嗐備笉榪囷紝浣跨敤LuaAPI灝哃ua寮曟搸闆嗘垚鍒扮▼搴忎腑錛岀‘瀹炴湁涓浜涗笉鏂逛究鈥斺旂敤钀芥湪闅忛緗戝弸鐨勮瘽鏉ヨ錛屽氨鏄?灝辮薄鐢ㄦ眹緙?銆傚綋鐒訛紝鐜板湪浣犱笉鐢ㄥ啀榪欎箞杈涜嫤浜嗭紝鍥犱負浣犲彲浠ヤ嬌鐢↙uaWrapper For C++銆備嬌鐢ㄨ繖涓伐鍏鳳紝鍦–++涓泦鎴怢ua鑴氭湰灝辨槸杞昏屾槗涓劇殑浜嬨備綘鍘熸湁鐨凜++鍑芥暟鍜岀被錛屽嚑涔庝笉闇瑕佷換浣曟敼鍙橈紝灝卞彲浠ヤ笌Lua鑴氭湰鍏變韓銆?br />

浣滆咃細 娌愭灚 錛堢浜屼漢鐢熸垚鍛橈級
鐗堟潈鎵鏈夎漿杞借娉ㄦ槑鍘熷嚭澶?br />涓婚〉錛氱浜屼漢鐢?http://www.d2-life.com
銆銆銆http://www.d2-life.com/LBS/blogview.asp?logID=41

涓轟粈涔堣鐢↙ua浣滆剼鏈紵
銆銆浣跨敤Lua浣滆剼鏈紝涓昏鏄洜涓哄畠灝忓閥鐜茬彂錛堜綋縐皬錛岃繍琛屽揩錛夛紝鑰屼笖瀹冪殑璇硶鍙堟瘮杈冪畝鍗曟槑浜嗐備笉榪囷紝浣跨敤LuaAPI灝哃ua寮曟搸闆嗘垚鍒扮▼搴忎腑錛岀‘瀹炴湁涓浜涗笉鏂逛究鈥斺旂敤钀芥湪闅忛緗戝弸鐨勮瘽鏉ヨ錛屽氨鏄?灝辮薄鐢ㄦ眹緙?銆傚綋鐒訛紝鐜板湪浣犱笉鐢ㄥ啀榪欎箞杈涜嫤浜嗭紝鍥犱負浣犲彲浠ヤ嬌鐢↙uaWrapper For C++銆備嬌鐢ㄨ繖涓伐鍏鳳紝鍦–++涓泦鎴怢ua鑴氭湰灝辨槸杞昏屾槗涓劇殑浜嬨備綘鍘熸湁鐨凜++鍑芥暟鍜岀被錛屽嚑涔庝笉闇瑕佷換浣曟敼鍙橈紝灝卞彲浠ヤ笌Lua鑴氭湰鍏變韓銆?br />銆銆鎴戜滑鎺ヤ笅鏉ワ紝鐢ㄥ疄渚嬫潵璇存槑錛屽浣曠敤LuaWrapper鏉ラ泦鎴怢ua鑴氭湰鍒頒綘鐨勭▼搴忎腑鍘匯?br />
1.聽聽鍒涘緩Lua寮曟搸
銆銆LuaWrap lua; 鎴栬?LuaWrap* lua = new LuaWrap;
銆銆鍒涘緩涓涓狶uaWrap瀵硅薄錛屽氨鏄垱寤轟竴涓狶ua鑴氭湰寮曟搸銆傚茍涓旀牴鎹甃ua鐨勭壒鎬э紝浣犲彲浠ュ垱寤轟換鎰忓涓狶ua寮曟搸錛岀敋鑷沖彲浠ュ垎甯冨湪涓嶅悓鐨勭嚎紼嬪綋涓?br />
2.聽聽瑁呰澆騫舵墽琛岃剼鏈▼搴?br />銆銆浣犲彲浠ヤ粠緙撳啿鍖轟腑瑁呰澆Lua鑴氭湰錛?br />銆銆lua.LoadString(
銆銆銆銆"print('Hello World')"
銆銆);
銆銆褰撶劧錛屼綘涔熷彲浠ヤ粠鏂囦歡涓鍏ワ紝騫舵墽琛孡ua鑴氭湰錛?br />銆銆Lua.LoadFile("./test.lua");
銆銆Lua鐨勮剼鏈紝鍙互鏄簮浠g爜錛屼篃鍙互緇忚繃緙栬瘧鍚庣殑涓棿浠g爜銆備篃璁鎬綘瀵圭紪璇戝悗鐨勪腑闂翠唬鐮佹洿鎰熷叴瓚b斺斿鏋滀綘涓嶅笇鏈涜婧愪唬鐮佽丹瑁歌8鐨勮闇插湪澶у鐨勭溂鍓嶃?br />
3.聽聽鑾峰彇鍜岃緗甃ua鍙橀噺
銆銆鑳藉鑾峰彇鍜岃緗剼鏈彉閲忕殑鍐呭錛屾槸涓涓渶鍩烘湰鐨勫姛鑳姐備綘鍙互浣跨敤GetGlobal鍜孲etGlobal鍑芥暟鏉ュ仛鍒拌繖涓鐐癸細
銆銆(1)聽聽鑾峰彇鍙橀噺錛?br />銆銆銆銆int a = lua.GetGlobal<int>("a");
銆銆銆銆LuaTable table = lua.GetGlobal<LuaTable>("t");
銆銆銆銆榪欓噷錛?lt;> 閲屽ご鐨勭被鍨嬶紝灝辨槸鎯寵鐨勫彉閲忕殑綾誨瀷銆?br />銆銆(2)聽聽璁劇疆鍙橀噺錛?br />銆銆銆銆lua.SetGlobal("a", a);
銆銆銆銆lua.SetGlobal("t", table);

4.聽聽璋冪敤Lua鍑芥暟
銆銆浣跨敤Call鍑芥暟錛屽氨鍙互寰堢畝鍗曠殑浠庝綘鐨勭▼搴忎腑璋冪敤Lua鍑芥暟錛?br />銆銆lua.Call<void>("print", "Hello World");
銆銆int sum = lua.Call<int>("add", 2, 3);
銆銆榪欓噷錛?lt;> 閲屽ご鐨勭被鍨嬫槸榪斿洖鍊肩殑綾誨瀷銆?br />
5.聽聽濡備綍璁㎜ua涔熻兘璋冪敤C++鐨勫嚱鏁?br />銆銆綺鵑噰鐨勫湴鏂規潵浜嗐傚亣濡傛湁涓嬮潰榪欐牱鐨勪竴涓嚱鏁幫細
銆銆int add(int a, int b)
銆銆{
銆銆銆銆return a + b;
銆銆}
銆銆濡傛灉鎯寵瀹冭兘澶熻Lua浣跨敤錛屽彧闇灝嗗畠娉ㄥ唽鍒癓ua寮曟搸褰撲腑灝卞彲浠ヤ簡錛?br />銆銆lua.RegisterFunc("add", int(int,int), add);
銆銆榪欐牱錛孡ua涓氨鍙互鐢ㄧ洿鎺ヤ嬌鐢ㄤ簡錛?br />銆銆錛圠ua鑴氭湰錛塻um = add(1, 3)

銆銆(*) RegisterFunc鐨勫姛鑳斤紝灝辨槸璁╀綘鎶奀++鐨勫嚱鏁版敞鍐屽埌Lua涓紝渚汱ua鑴氭湰浣跨敤銆?br />銆銆銆銆絎竴涓弬鏁幫紝鏄兂瑕佸湪Lua涓敤鐨勫嚱鏁板悕銆?br />銆銆銆銆絎簩涓弬鏁幫紝鏄疌++涓嚱鏁扮殑鍘熷瀷錛?C++鍏佽鍑芥暟閲嶈澆鐨勶紝浣犲彲浠ヤ嬌鐢ㄥ嚱鏁板師鍨嬶紝鏉ラ夋嫨闇瑕佹敞鍐屽埌Lua寮曟搸涓殑閭d釜鍑芥暟銆?br />銆銆銆銆絎笁涓弬鏁幫紝灝辨槸C++涓嚱鏁扮殑鎸囬拡浜嗐?br />
6.聽聽濡備綍鑳借C++鐨勭被鍦↙ua涓嬌鐢?br />銆銆鎴戜滑鍏堢湅鐪嬩笅闈㈣繖涓狢++綾伙細
class MyArray
{
聽聽std::vector<double> array;
public:
聽聽void setvalue(int index, double value);
聽聽double getvalue(int index);
聽聽int size();
聽聽const char* ToString();
};

銆銆浣犲噯澶囪璁㎜ua鑳藉鑷敱璁塊棶騫舵搷浣滆繖涓被銆傚緢綆鍗曪紝浣犲彧闇澧炲姞鍑犱釜瀹忓畾涔夊氨鍙互浜嗭細

class MyArray
{
聽聽std::vector<double> array;
public:
聽聽void setvalue(int index, double value);
聽聽double getvalue(int index);
聽聽int size();
聽聽const char* ToString();
聽聽// 灝嗕竴涓?class 浣滀負涓涓?Lua 瀵硅薄鏄緢瀹規槗鐨勶紝鍙渶瑕佸鍔犱互涓嬪畯瀹氫箟銆?br />聽聽DEFINE_TYPENAME("My.array");
聽聽BEGIN_REGLUALIB("array")
聽聽聽聽聽聽LUALIB_ITEM_CREATE("new", MyArray )聽聽// 鍒涘緩MyArray聽
聽聽聽聽聽聽LUALIB_ITEM_DESTROY("del", MyArray )聽聽// 娑堥櫎MyArray銆?br />聽聽END_REGLUALIB()
聽聽BEGIN_REGLUALIB_MEMBER()
聽聽聽聽LUALIB_ITEM_FUNC("size", int (MyArray*), &MyArray::size)
聽聽聽聽LUALIB_ITEM_FUNC("__getindex", double(MyArray*, int), &MyArray::getvalue)聽聽
聽聽聽聽LUALIB_ITEM_FUNC("__newindex", void (MyArray*, int, double), &MyArray::setvalue)
聽聽聽聽LUALIB_ITEM_FUNC("__tostring", const char* (MyArray*), &MyArray::ToString)
聽聽聽聽LUALIB_ITEM_DESTROY("__gc", MyArray ) 聽聽// 鍨冨溇鏀墮泦鏃舵秷闄ゅ璞$敤銆?br />聽聽END_REGLUALIB_MEMBER()
};

銆銆鍙鏈変簡榪欎簺瀹忓畾涔夛紝榪欎釜綾誨氨鏄彲浠ュ湪Lua涓嬌鐢ㄧ殑綾諱簡錛屾垜浠氨鍙互鍦↙ua涓敞鍐岃繖涓被浜嗭細
銆銆lua.Register<MyArray>()

銆銆榪欐牱娉ㄥ唽浠ュ悗錛屾垜浠湪Lua涓氨鍙互浣跨敤榪欎釜綾諱簡錛?br />銆銆a = array.new()聽聽-- 鍒涘緩瀵硅薄錛岀浉褰撲簬 a = new Myarray
銆銆a[1] = 10聽聽-- 璋冪敤__newindex錛屼篃灝辨槸C++涓殑 a->setvalue(1, 10)
銆銆a[2] = 20聽聽-- 璋冪敤__newindex錛屼篃灝辨槸C++涓殑 a->setvalue(2, 20)
銆銆print(
銆銆銆銆a,聽聽-- 璋冪敤 __tostring錛屼篃灝辨槸C++涓殑 a->ToString()
銆銆銆銆a:size(), -- 鐩稿綋浜嶤++涓殑 a->size()
銆銆銆銆a[1], -- 璋冪敤__getindex錛屼篃灝辨槸C++涓殑a->getvalue(1)
銆銆銆銆a[2]) --璋冪敤__getindex錛屼篃灝辨槸C++涓殑a->getvalue(2)
銆銆array.del(a)聽聽-- 娓呴櫎瀵硅薄錛岀浉褰撲簬 delete a
銆銆a = nil聽聽-- 娓呯┖ a錛屽緢璞++涓殑 a = NULL

銆銆褰撶劧錛屼綘涔熷彲浠ヤ笉鐢╠el榪欎釜瀵硅薄錛岃屾槸絳夊緟Lua甯綘鑷姩榪涜鍨冨溇鍥炴敹銆傚湪Lua榪涜鍨冨溇鍥炴敹鏃訛紝瀹冧細鑷姩璋冪敤榪欎釜瀵硅薄鐨?__gc 錛岀浉褰撲簬 delete銆?br />
銆銆閭d箞錛屽湪C++涓鍒涘緩MyArray瀵硅薄錛屽茍涓斾紶閫掔粰Lua鍏ㄥ眬鍙橀噺鎬庝箞鍔烇紵灝辮薄鍓嶉潰璁茶繃鐨勪竴鏍鳳紝浣跨敤SetGlobal錛?br />銆銆MyArray* a = new MyArray;
銆銆lua.SetGlobal("a", a);
銆銆瑕佽幏鍙栬瀵硅薄錛屽悓鏍風殑錛屽簲璇ヤ嬌鐢℅etGlobal錛?br />銆銆MyArray* a = lua.GetGlobal<MyArray>("a");
銆銆
銆銆瀵逛簬浼犻掔粰Lua鐨勫璞★紝灝辮Lua鏉ョ鐞嗚瀵硅薄鐨勭敓瀛樺懆鏈熷ソ浜嗐傚鏋滀綘闈炶鍒犻櫎瀹冪殑璇濓紝浣犲彲浠ヤ嬌鐢―elGlobalObject錛?br />銆銆lua.DelGlobalObject<MyArray>("a");
銆銆涓嶈繃榪欎箞鍋氱殑璇濓紝浣犲簲褰撴槑鐧戒綘鍦ㄥ仛浠涔堬紝鍥犱負鍦↙ua鐨勮剼鏈腑錛屽彲鑳藉凡緇忓湪澶氬寮曠敤浜嗚繖涓璞′簡銆傚垹闄や簡鍏朵腑涓涓紝灝嗗鑷村叾瀹冨紩鐢ㄥ璞″け鏁堬紝浠庤屽彲鑳藉紩鑷寸郴緇熷穿婧冦?br />
銆銆(1)聽聽DEFINE_TYPENAME("My.array");
銆銆銆銆瀹氫箟綾誨瀷鐨勫悕縐般傚湪Lua涓紝榪欎釜綾誨瀷鍚嶇О鏄敮涓鐢ㄦ潵璇嗗埆C++綾誨瀷鐨勶紝浣犲繀欏諱負涓嶅悓鐨勫璞$粰浜堜笉鍚岀殑鍚嶇О銆?br />
銆銆(2)聽聽BEGIN_REGLUALIB("array") ... END_REGLUALIB()
銆銆銆銆浣犲彲浠ヤ負涓涓璞″畾涔変竴涓▼搴忓簱錛?array"灝辨槸紼嬪簭搴撶殑鍚嶅瓧銆傚湪紼嬪簭搴撲腑瀹氫箟鐨勫嚱鏁版槸鍏ㄥ眬鍑芥暟錛屽湪Lua涓紝浣跨敤璇ュ嚱鏁幫紝闇瑕佸湪鍑芥暟鍓嶅姞涓婂簱鐨勫悕瀛楋紝濡傦細array.new錛堬級銆傞氬父錛岀▼搴忓簱浼氬寘鍚垱寤哄璞$殑鏂規硶銆傚錛?br />銆銆銆銆LUALIB_ITEM_CREATE("new", MyArray )聽聽// 鍒涘緩MyArray

銆銆銆銆榪欐牱瀛愶紝浣犳墠鑳藉湪Lua涓垱寤篗yArray錛?br />銆銆銆銆a = array.new()
銆銆
銆銆銆銆浣犱篃鍙互閫夋嫨澧炲姞涓涓垹闄ゅ璞℃搷浣滐細
銆銆銆銆LUALIB_ITEM_DESTROY("del", MyArray ) 聽聽// 鍒犻櫎MyArray
銆銆銆銆榪欐牱錛屼綘灝卞彲浠ョ洿鎺ュ垹闄や竴涓璞′簡錛?br />銆銆銆銆array.del(a)

銆銆(3)聽聽BEGIN_REGLUALIB_MEMBER() ...END_REGLUALIB_MEMBER()
銆銆銆銆鍦ㄦ澶勶紝浣犲彲浠ュ畾涔夊璞$殑鎴愬憳鍑芥暟錛屼篃鍙互閲嶈澆瀵硅薄鐨勬搷浣滅鈥斺旀槸鐨勶紝灝辮薄C++鐨刼perator閲嶈澆銆備緥濡傦細
銆銆銆銆LUALIB_ITEM_FUNC("__newindex", void (MyArray*, int, double), &MyArray::setvalue)
銆銆銆銆灝辨槸閲嶈澆 operator[] 鎿嶄綔絎︺侺ua涓彲閲嶈澆鐨勬搷浣滅榪樻湁璁稿錛屽錛?br />
銆銆銆銆__getindex錛氭搷浣滅[]錛屾敮鎸佽鍙栬闂紝濡?v = a[10]
銆銆銆銆__newindex錛氭搷浣滅[]錛屾敮鎸佽祴鍊艱闂紝濡?a[10] = 1.22
銆銆銆銆__tostring錛氬皢鍙橀噺杞崲鎴愬瓧涓瞋_add錛氱瓑鍚屼簬operator +
銆銆銆銆__add錛氭搷浣滅 錛?br />銆銆銆銆__sub錛氭搷浣滅 -
銆銆銆銆__mul錛氭搷浣滅 脳
銆銆銆銆__div錛氭搷浣滅 梅
銆銆銆銆__pow錛氭搷浣滅 ^ (涔樻柟)
銆銆銆銆__unm錛氫竴鍏冩搷浣滅 -
銆銆銆銆__concat錛氭搷浣滅 .. (瀛楃涓茶繛鎺?
銆銆銆銆__eq錛氭搷浣滅 == (a ~= b絳変環浜?not a == b)
銆銆銆銆__lt錛氭搷浣滅 < (a > b 絳変環浜?b < a)
銆銆銆銆__le錛氭搷浣滅 <= (a >= b 絳変環浜?b <= a錛岃娉ㄦ剰鐨勬槸錛屽鏋滄病鏈夊畾涔?__le"錛屽垯Lua灝嗕細灝濊瘯灝哸<=b 杞崲鎴?not (b < a) )

銆銆銆銆__gc錛氬湪鍨冨溇鍥炴敹鏃惰皟鐢ㄦ鍑芥暟錛岀浉褰撲簬C++鐨勬瀽鏋勫嚱鏁般傚己鐑堝緩璁畾涔夋鎿嶄綔絎︼紝浠ュ厤閫犳垚鍐呭瓨娉勬紡絳夋儏鍐點傛瘮濡傦細
銆銆銆銆LUALIB_ITEM_DESTROY("__gc", MyArray ) 聽聽// 鍨冨溇鏀墮泦鏃舵秷闄ゅ璞$敤銆?br />
銆銆銆銆(娉? 榪欓噷瑕佽鏄庝竴涓嬶紝鍦╨ua涓紝璁塊棶绱㈠紩鎿嶄綔絎︽槸__index錛屼笉鏄痏_getindex錛屽湪luaWrapper搴撲腑錛屼負浜嗘柟渚夸嬌鐢紝灝嗗叾鏄犲皠涓篲_getindex錛屽悓鏃訛紝瀵筥_index鐨勫畾涔夊皢浼氳蹇界暐銆?br />
銆銆銆銆灝辮繖涔堢畝鍗曘傚亣濡備綘宸茬粡鏈夌幇鎴愮殑綾伙紝鑰屼綘娌℃湁淇敼璇ョ被鐨勬潈鍔涳紝濡備綍灝嗗叾鍔犲叆鍒癓ua涓憿錛熺瓟妗堝氨鏄紝緇ф壙瀹冿紝灝嗘妸媧劇敓綾誨姞鍏ュ埌Lua涓?br />
緇撴潫璇?br />銆銆LuaWrapper 闇瑕佺敤鍒癰oost搴撶殑鏀寔錛歜oost/type_traits.hpp, boost/function.hpp, boost/bind.hpp錛屽畠浣跨敤浜咰++鐨勬ā鏉塊儴浠界壒鍖栵紝鍥犳錛孋++緙栬瘧鍣ㄥ鏋滀笉鏀寔姝ょ壒鎬э紝灝嗘棤娉曠紪璇戙傜洰鍓嶆敮鎸佹鐗規х殑緙栬瘧鍣ㄥ凡緇忔湁寰堝銆傚湪VisualStudo浜у搧緋誨垪涓紝鍙湁VC7.1鑳芥敮鎸佹鐗規э紝鍥犳錛屾偍濡傛灉姝e湪浣跨敤VisualStudio錛岃紜浣犵敤鐨勬槸VisualStudio2003銆?br />銆銆濡傛灉浣犺寰?LuaWrapper For C++ 鑳藉甯姪浣狅紝鎴戜細鎰熻寰堣崳騫搞傛垜寰堟効鎰忓皢榪欎釜紼嬪簭搴撳垎浜粰澶у銆傞『渚夸竴鎻愮殑鏄紝濡傛灉浣犲湪浣跨敤榪囩▼涓彂鐜癇UG錛屾垨鏄湁濂界殑寤鴻錛屽笇鏈涙偍鑳戒笌鎴戣仈緋匯備綘鍦ㄤ嬌鐢ㄨ繃紼嬩腑錛岃涓嶈鍒犻櫎鏂囦歡涓殑緗插悕淇℃伅錛涘鏋滀綘淇敼浜嗙▼搴忓簱錛岃鎮ㄥ湪淇敼鐨勬枃浠朵腑鍔犲叆鎮ㄧ殑淇敼璇存槑銆傚綋鐒訛紝鎴戜細闈炲父嬈㈣繋鎮ㄨ兘灝嗕慨鏀瑰悗鐨勭▼搴忓洖棣堢粰鎴戙傛垜浼氱戶緇紭鍖栧茍瀹屽杽瀹冦?br />



]]>
亚洲嫩草影院久久精品| 精品久久久久中文字| 青青青青久久精品国产h| 99久久精品免费看国产一区二区三区 | 国内精品久久久久| 五月丁香综合激情六月久久| 亚洲欧洲中文日韩久久AV乱码| 国内精品久久久久国产盗摄| 久久久久青草线蕉综合超碰| 中文字幕乱码人妻无码久久| 久久免费视频网站| A级毛片无码久久精品免费| 97精品国产97久久久久久免费| 综合人妻久久一区二区精品| 国产精品热久久无码av| 久久人人爽人人爽人人片AV麻豆| 久久久久国产亚洲AV麻豆| 亚洲国产日韩欧美久久| 中文字幕久久欲求不满| 人妻少妇久久中文字幕| 国产一级做a爰片久久毛片| 久久午夜福利无码1000合集| 漂亮人妻被黑人久久精品| 亚洲国产精品成人久久蜜臀 | 久久精品国产色蜜蜜麻豆| 99精品伊人久久久大香线蕉| 国内精品久久久久久99| 国产成人久久777777| 国产69精品久久久久777| 久久国产成人| 18岁日韩内射颜射午夜久久成人| 久久亚洲精品中文字幕| 一本久久知道综合久久| 久久久久久久久久久久久久| 欧美久久综合九色综合| 亚洲精品无码久久久久去q | 中文字幕久久亚洲一区| 伊人热热久久原色播放www| 亚洲国产精品综合久久网络 | 大香伊人久久精品一区二区| 中文精品久久久久人妻|