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

兔子的技術(shù)博客

兔子

   :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新評論

閱讀排行榜

評論排行榜

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

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

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

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

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

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

    最后還是選擇了LuaPlus,感覺還可以,下面是使用經(jīng)驗總結(jié)。

1。創(chuàng)建一個State。

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

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

2. 注冊C++函數(shù)到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++類成員函數(shù)到Lua

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

Update為CTest的一個成員函數(shù),

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

4.從文件中載入并執(zhí)行腳本

   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++中調(diào)用腳本里的函數(shù)

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

     test.lua文件中:

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

7.Lua腳本中調(diào)用C++函數(shù)

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

8.C++中直接調(diào)用注冊的Lua函數(shù)

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

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

 

本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處: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有啥不好,你應(yīng)該把boost也提供給他們安裝。  回復(fù)  更多評論
  

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            免费在线欧美黄色| 日韩图片一区| 亚洲精品日韩激情在线电影| 亚洲欧美日韩国产一区| 欧美午夜精品久久久久久孕妇| 国产日韩欧美在线观看| 国产模特精品视频久久久久| 宅男噜噜噜66一区二区| 亚洲茄子视频| 久热爱精品视频线路一| 99视频精品免费观看| 亚洲国产导航| 99热免费精品| 久久综合久久88| 亚洲精品网站在线播放gif| 免费看成人av| 国产综合色产| 欧美国产精品久久| 久久精品国产69国产精品亚洲 | 亚洲在线视频| 欧美在线看片| 久久手机精品视频| 9色精品在线| 9国产精品视频| 在线国产欧美| 日韩亚洲欧美成人| 亚洲日本中文字幕| 久久中文久久字幕| 国产精品尤物| 在线视频你懂得一区| 91久久精品www人人做人人爽| 午夜精品短视频| 亚洲欧美中文另类| 午夜精品视频在线| 欧美巨乳在线观看| 久久天天综合| 欧美一激情一区二区三区| 老色鬼久久亚洲一区二区| 韩国精品一区二区三区| 日韩视频不卡| 亚洲高清激情| 亚洲视频每日更新| 一片黄亚洲嫩模| 欧美日韩一区二区三区在线视频| 亚洲一区二区三区精品动漫| 欧美日韩国产免费| 亚洲欧洲精品成人久久奇米网| 亚洲美女免费视频| 久久综合国产精品| 国产精品国产成人国产三级| 午夜精品福利在线观看| 国产精品99久久久久久有的能看 | 欧美在线一级va免费观看| 性xx色xx综合久久久xx| 国产欧美一区二区精品婷婷| 国产日韩在线一区| 久久久久这里只有精品| 欧美精品国产精品| 鲁鲁狠狠狠7777一区二区| 国产精品wwwwww| 亚洲国产欧美日韩另类综合| 亚洲最新中文字幕| 国产美女精品| 午夜精品免费视频| 久久福利一区| 欧美日韩亚洲一区三区| 中日韩美女免费视频网站在线观看| 国产免费成人| 亚洲手机在线| 久久久免费av| 亚洲动漫精品| 亚洲第一色在线| 久久亚洲免费| 欧美 日韩 国产精品免费观看| 亚洲国产精品久久91精品| 欧美一进一出视频| 老司机免费视频一区二区| 国产欧美在线视频| avtt综合网| 亚洲国产一区二区三区青草影视| 免费一级欧美在线大片| 久久人人97超碰国产公开结果 | 亚洲激情欧美激情| 亚洲午夜精品福利| 欧美成人免费在线| 欧美一区1区三区3区公司| 亚洲精品欧美精品| 亚洲三级免费观看| 夜夜嗨av一区二区三区网站四季av | 久久久久免费视频| 久久久午夜视频| 亚洲视频 欧洲视频| 久久亚洲一区二区三区四区| 亚洲淫片在线视频| 欧美午夜久久久| 亚洲欧美日韩一区| 一区二区高清视频| 91久久久久| 亚洲国产人成综合网站| 美女成人午夜| 欧美日韩国产成人精品| 国产精品福利在线| 欧美成人日韩| 久久久青草婷婷精品综合日韩| 欧美激情欧美激情在线五月| 一区二区免费在线观看| 欧美与黑人午夜性猛交久久久| 欧美精品www在线观看| 欧美日韩精品一区二区三区四区| 亚洲毛片网站| 激情亚洲成人| 性欧美精品高清| 久久国产精品久久久| 亚洲精品影院在线观看| 亚洲国产91| 久久人人九九| 中文精品99久久国产香蕉| 欧美成人按摩| 欧美日韩在线亚洲一区蜜芽| 欧美激情视频在线免费观看 欧美视频免费一 | 免费看成人av| 欧美国产一区二区| 欧美精品日韩一本| 中文精品视频一区二区在线观看| 美女免费视频一区| 亚洲精品视频免费在线观看| 亚洲国产成人高清精品| 浪潮色综合久久天堂| 在线免费观看视频一区| 久久疯狂做爰流白浆xx| 老司机成人在线视频| 欧美日韩精品免费在线观看视频| 狠狠干综合网| 欧美成人免费在线视频| 亚洲无吗在线| 亚洲视频久久| 午夜欧美视频| 国产欧美精品一区aⅴ影院| 亚洲一区图片| 欧美激情小视频| 国产婷婷色综合av蜜臀av| 国产欧美日韩中文字幕在线| 国产精品日韩欧美一区二区三区 | 欧美精品一区视频| 9色porny自拍视频一区二区| 亚洲激情第一页| 欧美日韩理论| 久久免费精品日本久久中文字幕| 亚洲欧洲日本国产| 欧美freesex交免费视频| 久久综合久久久久88| 亚洲黄色有码视频| 亚洲伊人伊色伊影伊综合网| 欧美日韩一区二区在线观看视频| 亚洲高清自拍| 99国产一区| 欧美xx视频| 午夜视频在线观看一区二区三区| 欧美在线观看视频| 欧美制服第一页| 一区二区三区无毛| 亚洲视频在线观看免费| 亚洲精品美女在线观看| 午夜日韩视频| 9久re热视频在线精品| 亚洲专区在线| 亚洲日本精品国产第一区| 亚洲永久免费| 欧美激情一区二区三区 | 亚洲香蕉在线观看| 欧美精品在线观看一区二区| 免费看亚洲片| 亚洲精品一二三| 欧美日韩成人网| 亚洲乱码国产乱码精品精| 99av国产精品欲麻豆| 欧美电影免费观看高清完整版| 欧美一区二区视频观看视频| 久久久噜噜噜久久| 久久xxxx| 欧美国产先锋| 亚洲福利视频网站| 91久久精品国产91性色| 男女视频一区二区| 欧美高清视频| 一区二区三区日韩精品| 国产女人精品视频| 亚洲视频欧美视频| 女主播福利一区| 一本色道久久综合一区| 久久永久免费| 久久国产手机看片| 亚洲午夜在线观看| 亚洲激情网站免费观看| 欧美午夜激情小视频| 狂野欧美激情性xxxx| 亚洲欧美日韩国产成人精品影院 | 亚洲精品三级| 欧美大片国产精品| 国产欧美视频在线观看|