精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

LuaPlus學習筆記之如何在C++中集成Lua腳本

移動開發(fā) iOS
LuaPlus學習筆記之如何在C++中集成Lua腳本是本文要了介紹的內(nèi)容,只是通過簡單的舉一些例子來說明LuaPlus以及LuaPlusHelper的使用方法,具體文檔請參見LuaPlus.先來啃本文詳解。

LuaPlus學習筆記之如何在C++中集成Lua腳本是本文要介紹的內(nèi)容,去年我作了一個Lua腳本的C++包裝,有許多朋友感興趣,并嘗試使用,我感到受寵若驚。事實上,我作的包裝,學習的目的比較強,它還是有許多缺陷的。為了讓朋友們少走彎路,我推薦使用LuaPlus作為C++的包裝。

LuaPlusLuaC++增強,也就是說,LuaPlus本身就是在Lua的源碼上進行增強得來的。用它與C++進行合作,是比較好的一個選擇。

LuaPlus目前版本為:LuaPlus for Lua 5.01 Distribution Build 1080 (February 28, 2004)。大家可以到http://luaplus.org/ 站點下載:

  1. 源碼   (http://wwhiz.com/LuaPlus/LuaPlus50_Build1081.zip)  
  2.  
  3. 目標碼 (http://wwhiz.com/LuaPlus/LuaPlus50_Build1081_Win32Binaries.zip) 

我將在下面說明,如何使用LuaPlus,以及如何更方便的讓LuaPlusC++的類合作無間。

1、調(diào)用Lua腳本

  1.     // 創(chuàng)建Lua解釋器:  
  2.     LuaStateOwner state;  
  3.  
  4.     // 執(zhí)行Lua腳本:  
  5.     state->DoString("print('Hello World\n')");  
  6.     // 載入Lua腳本文件并執(zhí)行:  
  7.     state->DoFile("C:\\test.lua");  
  8.     // 載入編譯后的Lua腳本文件并執(zhí)行:  
  9.     state->DoFile("C:\\test.luac");  
  10.  
  11. 2、與Lua腳本互相調(diào)用  
  12.  
  13.   // 為Lua腳本設(shè)置變量  
  14.     state->GetGlobals().SetNumber("myvalue", 123456);  
  15.     // 獲得Lua變量的值  
  16.     int myvalue = state->GetGlobal("myvalue").GetInteger();  
  17.  
  18.     // 調(diào)用Lua函數(shù)  
  19.     LuaFunction<int> luaPrint = state->GetGlobal("print");  
  20.     luaPrint("Hello World\n");  
  21.  
  22.     // 讓Lua調(diào)用C語言函數(shù)  
  23.     int add(int a, int b){ return a+b;}  
  24.     state->GetGlobals().RegisterDirect("add", add);  
  25.     state->DoString("print(add(3,4))");  
  26.  
  27.     // 讓Lua調(diào)用C++類成員函數(shù)  
  28.     class Test{public: int add(int a, int b){return a+b;}};  
  29.     Test test;  
  30.     state->GetGlobals().RegisterDirect("add", test, add);  
  31.     state->DoString("print(add(3,4))"); 

3、在Lua腳本中使用C++

這個稍微有點小麻煩。不過,我包裝了一個LuaPlusHelper.h的文件,它可以很輕松的完成這個工作。它的實現(xiàn)也很簡單,大家可以從源碼上來獲得如何用純LuaPlus實現(xiàn)同樣的功能。

不過,這里仍然有一個限制沒有解決:不能使用虛成員函數(shù)。不過考慮到我們僅是在Lua調(diào)用一下C++函數(shù),并不是要將C++***的導入到Lua,這個限制完全可以接受。

另外,類成員變量不能直接在Lua中訪問,可以通過類成員函數(shù)來訪問(比如SetValue/GetValue之類)。

  1.   // 下面是一個簡單的C++類:  
  2.  class Logger  
  3.  {  
  4.  public:  
  5.   void LOGMEMBER(const char* message)  
  6.   {  
  7.    printf("In member function: %s\n", message);  
  8.   }  
  9.  
  10.   Logger()  
  11.   {  
  12.    printf("Constructing(%p)...\n", this);  
  13.    v = 10;  
  14.   }  
  15.   virtual ~Logger()  
  16.   {  
  17.    printf("Destructing(%p)...\n", this);  
  18.   }  
  19.  
  20.   Logger(int n)  
  21.   {  
  22.    printf(" -- Constructing[%d](%p)...\n", n, this);  
  23.   }  
  24.   Logger(Logger* logger)  
  25.   {  
  26.    printf(" -- Constructing[%p](%p)...\n", logger, this);  
  27.    logger->LOGMEMBER(" Call From Constructor\n");  
  28.   }  
  29.   int SetValue(int val)  
  30.   {  
  31.    v = val;  
  32.   }  
  33.   int GetValue()  
  34.   {  
  35.    return v;  
  36.   }  
  37.  public:  
  38.   int v;  
  39.  };  
  40.  
  41.     // 導入到Lua腳本:  
  42.     LuaClass<Logger>(state)  
  43.  .create("Logger") // 定義構(gòu)造函數(shù) Logger::Logger()  
  44.  .create<int>("Logger2")  // 定義構(gòu)造函數(shù) Logger::Logger(int)  
  45.  .create<Logger*>("Logger3") // 定義構(gòu)造函數(shù) Logger::Logger(Logger*)  
  46.  .destroy("Free")  // 定義析構(gòu)函數(shù) Logger::~Logger()  
  47.  .destroy("__gc")  // 定義析構(gòu)函數(shù) Logger::~Logger()  
  48.  .def("lm", &Logger::LOGMEMBER)  // 定義成員函數(shù) Logger::LOGMEMBER(const char*)  
  49.  .def("SetValue", &Logger::SetValue)  
  50.  .def("GetValue", &Logger::GetValue);  
  51.  
  52.     // 在Lua中使用Logger類(1):  
  53.     state->DoString(  
  54.         "l = Logger();"  // 調(diào)用構(gòu)造函數(shù) Logger::Logger()  
  55.         "l.lm('Hello World 1');"  // 調(diào)用成員函數(shù) Logger::LOGMEMBER(const char*)  
  56.         "l.Free();"  // 調(diào)用析構(gòu)函數(shù) Logger::~Logger()  
  57.         );  
  58.  
  59.     // 在Lua中使用Logger類(2):  
  60.     state->DoString(  
  61.         "m = Logger(10);" // 調(diào)用構(gòu)造函數(shù) Logger::Logger(int)  
  62.         "m.lm('Hello World 2');"  // 調(diào)用成員函數(shù) Logger::LOGMEMBER(const char*)  
  63.         "n = Logger(m);" // 調(diào)用構(gòu)造函數(shù) Logger::Logger(Logger*)  
  64.         "n.lm('Hello World 3');"  // 調(diào)用成員函數(shù) Logger::LOGMEMBER(const char*)  
  65.         "m.SetValue(11);"  
  66.         "print(m.GetValue());"  
  67.         "m,n = nil, nil;" // m,n 將由Lua的垃極回收來調(diào)用析構(gòu)函數(shù)  
  68.         ); 

4、將一組C函數(shù)歸類到Lua模塊

  1.    //同上面一樣,我采用LuaPlusHelper.h來簡化:  
  2.     LuaModule(state, "mymodule")  
  3.  .def("add", add)  
  4.  .def("add2", test, add);  
  5.  
  6.     state->DoString(  
  7.         "print(mymodule.add(3,4));"  
  8.         "print(mymodule.add2(3,4));"  
  9.         ); 

5、使用Lua的Table數(shù)據(jù)類型

  1.  // 在Lua中創(chuàng)建Table  
  2.     LuaObject table = state->GetGlobals().CreateTable("mytable");  
  3.     table.SetInteger("m", 10);  
  4.     table.SetNumber("f", 1.99);  
  5.     table.SetString("s", "Hello World");  
  6.     table.SetWString("ch", L"你好");  
  7.     table.SetString(1, "What");  
  8.  
  9.     // 相當于Lua中的:  
  10.     // mytable = {m=10f=1.99, s="Hello World"ch=L"你好", "What"}  
  11.  
  12.     // 也可以使用table作為key和value:  
  13.     state->GetGlobals().CreateTable("nexttable")  
  14.         .SetString(table, "Hello")  
  15.         .SetObject("obj", table);  
  16.     // 相當于Lua中的:  
  17.     // nexttable = {mytable="Hello"obj=mytable}  
  18.  
  19.     //獲得Table的內(nèi)容:  
  20.     LuaObject t2 = state->GetGlobals("mytable");  
  21.     int m = t2.GetByName("m").GetInteger();  
  22.  
  23.     LuaObject t3 = state->GetGlobals("nexttable");  
  24.     std::string str = t3.GetByObject(t2).GetString(); 

6、遍歷Table

  1.  LuaStateOwner state;  
  2.  state.DoString( "MyTable = { Hi = 5Hello = 10Yo = 6 }" );  
  3.  
  4.  LuaObject obj = state.GetGlobals()[ "MyTable" ];  
  5.  for ( LuaTableIterator it( obj ); it; it.Next() )  
  6.  {  
  7.      const char* key = it.GetKey().GetString();  
  8.      int num = it.GetValue().GetInteger();  
  9.  } 

小結(jié):LuaPlus學習筆記之如何在C++中集成Lua腳本的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-23 09:50:29

LuaPlusLua 腳本

2011-08-24 09:49:38

VS2008Lua解釋器

2011-08-31 15:36:59

Lua解釋器

2011-03-02 17:42:35

2011-08-25 13:22:40

CEGUILua腳本

2011-08-23 16:59:16

C++LUA腳本LUA API

2021-11-01 14:52:38

ElasticSear索引SQL

2023-04-04 07:52:26

RedisLua腳本

2013-12-13 16:53:00

Lua腳本語言C++

2017-07-11 13:00:16

LinuxCentOS 7Samba4 AD

2011-09-06 17:12:25

Lua腳本C++封裝庫

2011-08-23 09:56:52

UnicodeLua

2023-03-13 00:16:28

2010-01-14 17:02:10

學習C++

2011-08-25 09:55:27

2025-01-26 00:00:40

Seata分布式事務(wù)

2010-01-26 17:53:05

C++入門學習

2011-08-23 11:13:56

Lua

2023-09-27 23:24:50

C++鏈表

2010-01-26 11:06:50

C++開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲女人毛茸茸高潮| 成人免费a级片| 91激情在线观看| 欧美精选一区| 亚洲老板91色精品久久| 日本肉体xxxx裸体xxx免费| 黄色网址在线免费观看| 成人18视频日本| 国产精品久久久久久久一区探花 | 日韩超碰人人爽人人做人人添| 一本大道久久a久久综合| 先锋影音男人资源| 经典三级在线| 丁香啪啪综合成人亚洲小说| 国产精品黄色av| 国产精品成人aaaa在线| 国产精品福利在线观看播放| 国产视频欧美视频| 中文字幕一二三| 成人全视频在线观看在线播放高清| 亚洲一区二区三区四区中文字幕| 手机看片福利永久国产日韩| 五月色婷婷综合| 国产一区二区不卡| 国产精品草莓在线免费观看| 日韩污视频在线观看| 亚洲男女av一区二区| 亚洲色图美腿丝袜| 亚洲精品乱码久久久久久久| 秋霞一区二区三区| 欧美精品乱码久久久久久按摩| 精品一区二区中文字幕| 欧美视频观看一区| 波多野结衣久久久久| 自拍亚洲一区| 亚洲国产小视频| 中文写幕一区二区三区免费观成熟| 成人自拍视频网| 一本大道综合伊人精品热热| 日本日本19xxxⅹhd乱影响| 在线看福利影| 亚洲色图视频网| 一区二区成人国产精品| 91社区在线| 国产人成亚洲第一网站在线播放| 噜噜噜噜噜久久久久久91| 成人午夜视频一区二区播放| 国产99精品在线观看| 亚洲aa在线观看| 国产三级三级在线观看| 国产在线精品视频| 91丝袜美腿美女视频网站| 中文字幕精品一区二| 青娱乐精品视频| 国产精品亚洲美女av网站| 欧美精品一二三四区| 国产深夜精品| 欧洲成人免费aa| 亚洲精品国产无码| 日韩国产欧美在线播放| 国产精品久久久久av免费| 最近中文字幕在线观看| 全国精品久久少妇| 91精品视频播放| 高h震动喷水双性1v1| 成人av电影免费观看| 久久人人九九| 91官网在线| 亚洲女女做受ⅹxx高潮| 欧美久久久久久久久久久久久久| 爱情岛论坛亚洲品质自拍视频网站| 香蕉乱码成人久久天堂爱免费| 欧美男女爱爱视频| 欧美片第一页| 欧美日韩国产综合视频在线观看| 深爱五月综合网| 国产欧美三级电影| 亚洲午夜精品久久久久久性色 | 国产精品a级| 午夜精品国产精品大乳美女| 亚洲乱码国产乱码精品| 久久av中文字幕片| 国产精品久久久久久久免费大片| 日本国产在线| 中文字幕亚洲不卡| 欧美精品卡一卡二| 玛雅亚洲电影| 678五月天丁香亚洲综合网| 精品无码av一区二区三区| 网友自拍一区| 久久国产精品影片| 麻豆久久久久久久久久| 精品一区二区三区香蕉蜜桃 | 偷窥少妇高潮呻吟av久久免费| 国产一级不卡毛片| 国产欧美视频在线| 日韩av在线看| 国产3级在线观看| 亚洲精品乱码| 国产一区二区在线免费| 亚洲欧美自偷自拍| 亚洲视频在线观看一区| 女人天堂av手机在线| 亚洲在线资源| 亚洲欧美激情一区| 欧美日韩一级大片| 日韩有码一区二区三区| 国产精品福利视频| 色开心亚洲综合| 欧美性猛交丰臀xxxxx网站| 亚洲免费成人在线视频| 国模精品一区| 午夜精品久久久久久久99热| 国产一区二区三区黄片| 久久久91精品国产一区二区精品| 国产一区二区三区在线免费| 成人在线免费av| 亚洲精品自拍偷拍| 精品在线视频观看| 韩国欧美国产一区| 日韩精品国内| 亚洲私拍视频| 亚洲国产精品va在线看黑人动漫 | 国产精品第七页| 欧美99在线视频观看| 国产精品最新在线观看| 你懂的在线视频| 午夜精品久久久久影视| 国产不卡的av| 小小影院久久| 国产啪精品视频网站| 福利视频在线播放| 91国偷自产一区二区三区成为亚洲经典 | 亚洲欧洲高清在线| 欧美一区二区三区四| 成人爱爱电影网址| 国产精品videossex国产高清 | 欧美一级一级性生活免费录像| 少妇一级黄色片| 人人精品人人爱| 亚洲成色最大综合在线| 成人在线观看免费播放| 一本久久综合亚洲鲁鲁| 欧美成人一区二区三区四区| 久久久噜噜噜久久人人看| 国产99久久九九精品无码| 久草精品视频| 欧美亚洲在线播放| 亚洲人妻一区二区| 色综合天天综合色综合av | 7777kkkk成人观看| 天堂网在线中文| 狠狠色噜噜狠狠狠狠97| 一区二区三区免费在线观看视频| 亚洲综合精品| 日韩激情视频| 成人豆花视频| 欧美精品videos另类日本| 国产成人精品白浆久久69| 亚洲精品国产一区二区三区四区在线| 激情成人在线观看| 欧美特黄a级高清免费大片a级| 国产成人亚洲欧美| 岛国av在线网站| 亚洲新声在线观看| 亚洲视频在线观看免费视频| 最新国产精品久久精品| 一区二区三区四区影院| 亚洲美女视频在线免费观看 | 国产香蕉在线| 欧美区视频在线观看| 亚洲天堂黄色片| 成人黄色777网| 成人黄色片视频| 热久久天天拍国产| 91九色对白| 在线中文字幕播放| 中文字幕一区日韩电影| 亚洲第一天堂网| 色综合天天综合给合国产| 四虎影视一区二区| 成人黄色网址在线观看| 男人舔女人下面高潮视频| 国产精品麻豆久久| 国产欧美韩日| 99riav视频一区二区| 欧美丰满少妇xxxx| 国产精品视频二区三区| 日韩一级大片在线观看| 天堂网中文字幕| 亚洲美腿欧美偷拍| 国产男男chinese网站| 精品在线一区二区三区| 久草热视频在线观看| 欧美国产小视频| 精品国产一区二区三区免费 | mm视频在线视频| 在线观看欧美日韩| 色婷婷中文字幕| 在线播放日韩导航| 国产www在线| 一个色在线综合| 香蕉久久久久久久| 91在线精品一区二区| 中文字幕55页| 人人精品人人爱| 国产熟女高潮视频| 亚洲视频狠狠| 正在播放一区| 欧美精品一区二区三区中文字幕| 国产v亚洲v天堂无码| 一级欧美视频| 国产福利视频一区二区| av白虎一区| 欧美大片第1页| 黄网址在线观看| 正在播放国产一区| 欧美日韩在线精品一区二区三区激情综| 91精品国产一区二区人妖| 日本中文字幕久久| 亚洲成a人片在线不卡一二三区| 欧美风情第一页| 中文字幕免费不卡| 国产精品毛片一区二区| 成人午夜视频在线| 肉丝美足丝袜一区二区三区四| 精品在线视频一区| 美女网站视频黄色| 久久男女视频| 日韩中文字幕组| 麻豆精品网站| 欧美黄色免费影院| 99热在线精品观看| 午夜免费福利小电影| 黄色免费成人| 精品久久久久久无码中文野结衣| 欧美成人精品| 亚洲精品国产suv一区88| 羞羞答答成人影院www| 一区二区在线中文字幕电影视频| 教室别恋欧美无删减版| 清纯唯美一区二区三区| 国产精品亚洲片在线播放| 久久99精品久久久久久久青青日本 | 欧美日本免费一区二区三区| 中文字幕日日夜夜| 欧美午夜一区二区| 在线免费av片| 欧美日韩精品一区二区三区四区 | 亚洲韩国日本中文字幕| 日韩在线视频免费| 日韩高清av在线| 毛片网站在线| 中文综合在线观看| 老司机精品视频在线观看6| 久热精品视频在线观看| 国产欧美久久久久久久久| 九九久久精品一区| 蜜臀av在线| 欧美亚洲在线观看| 88xx成人免费观看视频库 | 色与欲影视天天看综合网| 国产精品探花在线| 91国在线精品国内播放| 神马久久资源| 91老司机在线| 国产精品巨作av| 欧美日韩综合精品| 97精品97| 免费国产黄色网址| 日日摸夜夜添夜夜添精品视频| 中文字幕在线综合| 国产成人精品免费网站| 国产麻豆xxxvideo实拍| 国产欧美日韩在线| 日韩一区二区三区四区在线| 午夜成人免费视频| 国产情侣小视频| 欧美一级片免费看| 外国精品视频在线观看 | 91麻豆精品国产91久久久久久久久 | 欧美精品第一页在线播放| 鲁鲁在线中文| 国产免费一区二区三区在线能观看| 国产亚洲亚洲国产一二区| 国外成人免费视频| 日韩激情免费| 久久国产精品视频在线观看| 蜜臀av亚洲一区中文字幕| 秘密基地免费观看完整版中文 | 日本男女交配视频| 日韩国产欧美三级| 中文字幕一区二区三区人妻在线视频| 91啪亚洲精品| 极品颜值美女露脸啪啪| 色国产综合视频| 精品久久久久中文慕人妻| 亚洲午夜av电影| 97蜜桃久久| 91色精品视频在线| 精品美女在线视频| 波多野结衣av一区二区全免费观看| 日韩主播视频在线| wwwxx日本| 亚洲免费视频中文字幕| 国产日韩久久久| 亚洲国产日韩欧美在线99| 黄色免费网站在线观看| 国产成人黄色av| 另类春色校园亚洲| 免费的一级黄色片| 国产一区欧美日韩| 69xxx免费| 日本高清视频一区二区| 六月丁香综合网| 欧美乱大交xxxxx另类电影| 国产精品第一| 日韩欧美亚洲日产国| 亚洲精品美女91| 中文字幕天堂av| 亚洲综合成人在线| 国产黄色片免费| 久久精品这里热有精品| 福利一区二区| 午夜精品一区二区在线观看| 久久亚洲欧美| 全黄一级裸体片| 狠狠色香婷婷久久亚洲精品| 五月婷婷六月丁香| 久久久亚洲福利精品午夜| 2019中文亚洲字幕| 亚洲一二三区在线| 蜜臀va亚洲va欧美va天堂| 一级黄色录像毛片| 色狠狠桃花综合| 番号集在线观看| 国产精品久久久久久久久久久不卡 | 手机在线观看av| 久久久久久高清| 国产精品社区| 老牛影视av老牛影视av| 色婷婷久久久久swag精品| 免费资源在线观看| 欧美在线一区二区三区四| 亚洲区小说区| 天天干在线影院| 国产精品电影一区二区| 一级黄色片在线观看| www国产精品com| 国产精品99久久免费| 99亚洲国产精品| 国产成人精品免费| 国产精品第九页| 日韩极品精品视频免费观看| 中文在线免费二区三区| 青青成人在线| 久久99精品国产| 久草免费在线观看视频| 亚洲国产精品久久久久秋霞蜜臀| 麻豆国产在线| 日韩一区二区三区高清| 久久se精品一区精品二区| 美女的奶胸大爽爽大片| 精品国产91久久久久久久妲己| 密臀av在线播放| 日韩三级电影| 国产在线不卡一卡二卡三卡四卡| 特级片在线观看| 亚洲精品国产精品乱码不99按摩| 欧美成人a交片免费看| 在线电影看在线一区二区三区| 国产福利精品导航| 日韩三级免费看| 中文字幕欧美日韩在线| 亚洲精品一区国产| 各处沟厕大尺度偷拍女厕嘘嘘| 欧美激情一区二区三区在线| 国产美女主播在线观看| 97在线视频国产| 日韩精品欧美激情一区二区| 亚洲熟女一区二区三区| 色综合久久久久久久| 最近中文字幕免费mv2018在线| 精品久久久久久中文字幕动漫| 日韩高清一区二区| 免费在线视频一区二区| 亚洲人成五月天| 日本精品在线播放 | 国产成人精品片| 日韩中文娱乐网| 欧美成人一区在线观看| 91亚洲精品久久久蜜桃借种| 精品久久久久久国产91| 日本激情视频在线观看| 国产在线一区二区三区欧美| 久久成人综合网| 欧美一级视频免费观看| 久久国产一区二区三区| 自拍偷拍一区| 久久久久久一区|