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

兔子的技術博客

兔子

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新評論

閱讀排行榜

評論排行榜

摘自:http://blog.csdn.net/yjn001/archive/2009/01/16/3795842.aspx
花了兩天時間,費了好大的功夫才實現了C++項目中集成Lua腳本的可行性分析。下面的工作就是去寫腳本了,在寫腳本之前先把C++集成Lua的經驗總結一下。

     目前能實現C++集成Lua的有很多。比較常見的有LuaPlus,LuaBind,ToLua++,LuaWrapper等。這幾種我都試過了,各有優缺點。

    LuaBind,確實不錯,很強大。如果不是它需要Boost庫支持的話我就選它了。

    ToLua++,我只是粗略的看了下,因為編譯太麻煩,很快就放棄了。不過看網上評價還不錯。

    LuaWrapper,國內前輩所出,本想支持一下,可一看說明還是需要Boost,只好放棄了。

并不是因為Boost不好,而是因為我的項目連帶工程源代碼都要投遞去應聘的,不能保證對方機器上也安裝了Boost庫。

    最后還是選擇了LuaPlus,感覺還可以,下面是使用經驗總結。

1。創建一個State。

   LuaStateOwner* pState = NULL;
   pState = new LuaStateOwner(true);
   if ( !pState )
    return E_OUTOFMEMORY;

注意:LuaStateOwner構造函數參數true表示在構造的過程中對Lua標準庫進行初始化。這一點非常重要。一開始我調用的不帶參數的構造函數,然后在.lua中調用math.random()的時侯就一直失敗,今天研究了一下午才弄明白的。

2. 注冊C++函數到Lua
   (這一點我沒試,直接引用示例里的)

static int PrintLSNumber(LuaState* state)
{
     LuaStack args(state);

    // Verify it is a number and print it.
    if (args[1].IsNumber()) {
         printf("%f ", args[1].GetNumber());
     }
    // No return values.
    return 0;
}

   LuaObject globalsObj = (*pState)->GetGlobals();
   globalsObj.Register("PrintNumber", PrintLSNumber);


3。注冊C++類成員函數到Lua

   LuaObject globalsObj = (*pState)->GetGlobals();
   CTest test; //CTest為類名
   globalsObj.RegisterDirect( "update", test, &CTest::Update );

Update為CTest的一個成員函數,

雙引號中的update是指注冊到Lua中的函數名,在lua腳本中使用update()即調用了test對象的Update()函數。

4.從文件中載入并執行腳本

   int iret = (*pState)->DoFile( "test.lua" );
   if ( 0 != iret )
    return false;
返回值為0表示成功,否則不成功.

5.C++獲取Lua腳本中的變量

   float x = (*pState)->GetGlobal( "x" ).GetFloat();
   注意,要在DoFile之后才能從lua中獲取變量,此時文件已被載入。

6.C++中調用腳本里的函數

      LuaFunction<bool> RandBuild = (*pState)->GetGlobal("RandBuild");
     bool ret = RandBuild();

     test.lua文件中:

     function RandBuild()
           math.random(); --第一次的隨機數太小,合棄
          x = math.random( -100, 100 );
         return true;
     end;

7.Lua腳本中調用C++函數

    這里可以調用的就是前面注冊過的C++函數,調用時直接使用注冊時的函數名。
    比如第3步中的,如果腳本中寫update(),就相當于在C++中test.Update();

8.C++中直接調用注冊的Lua函數

    (*pState)->DoString( "update()" );
    這一句意思是只執行"update()"這一句腳本。

另外,項目目錄下還要放上LuaPlus和Lua的頭文件,還有LuaPlus的.lib和.dll。這些可以在LuaPlus網站上下載到。http://luaplus.org/tiki-index.php?page=LuaPlus+Home+Page
草草的寫完,有點亂,就將就著看吧。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/yjn001/archive/2009/01/16/3795842.aspx

posted on 2010-03-13 18:03 會飛的兔子 閱讀(1194) 評論(2)  編輯 收藏 引用 所屬分類: C++庫,組件

Feedback

# re: 使用LuaPlus在C++項目中集成Lua腳本 2010-03-14 21:47 陳梓瀚(vczh)
boost有啥不好,你應該把boost也提供給他們安裝。  回復  更多評論
  

# re: 使用LuaPlus在C++項目中集成Lua腳本 2010-03-15 11:08 會飛的兔子
@陳梓瀚(vczh)
嚴重同意!  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美精品激情blacked18| 中文精品99久久国产香蕉| 亚洲在线一区二区| 亚洲已满18点击进入久久| 欧美视频一区二区三区| 亚洲欧美日韩一区二区在线| 欧美伊人久久大香线蕉综合69| 国产亚洲成年网址在线观看| 欧美电影美腿模特1979在线看| 久久久夜精品| 国产精品日本精品| 免费国产一区二区| 国产日韩欧美综合精品| 在线观看不卡| 亚洲性视频网址| 一区二区三区高清| 久久久久高清| 欧美金8天国| 亚洲欧美日本日韩| 亚洲精品中文字幕在线| 欧美欧美天天天天操| 欧美777四色影视在线| 久久久精品日韩| 乱中年女人伦av一区二区| 久久综合色88| 欧美日韩1080p| 欧美视频在线不卡| 国产精品欧美一区喷水| 国产婷婷色一区二区三区四区| 国产无一区二区| 国精产品99永久一区一区| 国产亚洲精品久久久久久| 极品少妇一区二区| 亚洲伦理网站| 亚洲欧洲午夜| 亚洲婷婷综合色高清在线| 99精品免费网| 麻豆精品一区二区av白丝在线| 亚洲乱码日产精品bd| 久久精品视频亚洲| 国产精品免费观看在线| 亚洲区在线播放| 久久综合九色| 亚洲欧美日韩中文视频| 欧美日韩中文字幕| 亚洲最新在线视频| 亚洲国产国产亚洲一二三| 性18欧美另类| 国产精品一区二区三区四区 | 激情欧美一区| 欧美一区二区三区播放老司机| 亚洲精品裸体| 欧美精品在线免费观看| 亚洲毛片av在线| 欧美激情第五页| 麻豆精品91| 91久久国产综合久久| 欧美顶级大胆免费视频| 久久婷婷av| 亚洲第一在线| 欧美激情国产日韩| 欧美成人免费在线视频| 亚洲三级免费观看| 亚洲国产婷婷综合在线精品| 欧美福利网址| 亚洲一区二区黄色| 亚洲综合二区| 国内自拍亚洲| 欧美成年人视频| 欧美成人精品一区二区| 91久久精品一区二区别| 亚洲国产婷婷香蕉久久久久久99 | 欧美亚洲日本国产| 国产一区二区在线观看免费播放 | 亚洲免费观看在线观看| 亚洲国产成人精品久久久国产成人一区 | 亚洲高清123| 欧美日韩精品一区视频| 亚洲视频福利| 午夜精品一区二区三区在线视| 国产啪精品视频| 麻豆免费精品视频| 欧美大片一区二区| 亚洲一级片在线看| 欧美一区二区三区四区在线观看| 精品51国产黑色丝袜高跟鞋| 欧美激情亚洲精品| 国产精品日韩久久久| 久久夜色精品国产亚洲aⅴ| 蜜臀久久久99精品久久久久久| 99这里只有精品| 亚洲欧美日韩国产综合在线 | 亚洲精品偷拍| 亚洲永久免费| 亚洲福利视频一区二区| 亚洲精品一区二区三区99| 国产精品一香蕉国产线看观看| 免费观看30秒视频久久| 欧美日韩专区在线| 免费人成精品欧美精品| 欧美视频日韩视频| 久久综合99re88久久爱| 欧美日韩国产专区| 久久露脸国产精品| 欧美日韩综合另类| 欧美高清视频在线观看| 国产精品午夜春色av| 欧美国产日韩一区二区| 国产精品青草久久| 91久久精品一区二区别| 国产日韩欧美日韩| 一本久道久久久| 国产在线观看91精品一区| 亚洲国产精品一区二区第一页| 国产麻豆9l精品三级站| 欧美 日韩 国产精品免费观看| 国产精品久久77777| 欧美激情一区| 国产日本欧美一区二区三区在线| 欧美激情片在线观看| 国产日韩欧美制服另类| 一区二区动漫| 夜夜爽av福利精品导航| 久久综合中文字幕| 国产欧美亚洲一区| 亚洲午夜一区二区| 久久综合网色—综合色88| 欧美在线啊v| 欧美三级视频| 亚洲福利精品| 亚洲高清在线播放| 午夜一区不卡| 亚洲欧洲av一区二区三区久久| 久久视频在线免费观看| 亚洲欧美日韩综合一区| 欧美色欧美亚洲另类二区| 欧美电影专区| 国产亚洲欧美日韩在线一区| 亚洲视频观看| 亚洲欧美日韩在线| 国产精品久久久久久妇女6080 | 久久精品99无色码中文字幕 | 亚洲一卡久久| 国产精品av久久久久久麻豆网 | 久久亚洲国产精品日日av夜夜| 欧美一区激情| 国产亚洲欧美一区二区三区| 亚洲一区二区三区四区五区午夜| 亚洲欧美日韩成人| 国产欧美日韩激情| 欧美一区二区啪啪| 久久综合伊人77777蜜臀| 伊人成人网在线看| 久久资源在线| 亚洲二区在线视频| 99riav国产精品| 欧美日韩国产999| 亚洲欧美激情在线视频| 激情综合网激情| 男男成人高潮片免费网站| 欧美成人午夜免费视在线看片 | 老司机午夜精品视频| 在线精品视频一区二区| 欧美精品尤物在线| 亚洲午夜精品一区二区| 久久久久久一区二区三区| 亚洲成人在线免费| 欧美国产日韩a欧美在线观看| 日韩西西人体444www| 欧美在线观看日本一区| 国产伦精品一区二区三区视频孕妇| 性欧美在线看片a免费观看| 久久香蕉国产线看观看网| 一级日韩一区在线观看| 国产乱人伦精品一区二区| 欧美亚洲在线播放| 欧美mv日韩mv国产网站| 一区二区三区视频在线| 国产精品欧美久久| 亚洲国产精品第一区二区| 亚洲午夜影视影院在线观看| 国产日产欧美精品| 欧美日韩a区| 久久久久国产精品厨房| 韩国女主播一区| 亚洲精品免费在线播放| 黄色国产精品| 欧美成人综合在线| 亚洲在线1234| 1769国内精品视频在线播放| 欧美日一区二区在线观看 | 欧美日韩国产va另类| 亚洲欧美偷拍卡通变态| 欧美激情精品久久久久久大尺度| 亚洲天堂av综合网| 亚洲人体偷拍| 国产一区二区三区在线观看精品| 欧美日韩国产在线播放网站| 久久在精品线影院精品国产| 亚洲欧美日韩精品久久奇米色影视|