一個完整的例子試驗了一個完整的例子。在C++中生成一個類,注冊到lua。從lua調用C++類的成員函數。在Alternate.lua中寫了階乘函數factorial。從C++中調用factorial。Alternate.lua如下:print("nowinalternate.lua");print("initialnumberofAxhSystem:"..AxhSystem:GetNumber());Axh" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

LuaPlus學習(四)

系統 1797 0

<--!版權所有foruok,轉載注明出處!-->

一個完整的例子

試驗了一個完整的例子。 在C++中生成一個類,注冊到lua。 從lua調用C++類的成員函數。 在Alternate.lua中寫了階乘函數factorial。 從C++中調用factorial。 Alternate.lua如下:
print( " nowinalternate.lua " ); print( " initialnumberofAxhSystem: " ..AxhSystem:GetNumber()); AxhSystem:SetNumber( 15 ); print( " Changethenumberfromlua,new: " ..AxhSystem:GetNumber()); print( " NowSetmessageto'Helloworld' " ); AxhSystem:SetMessage( " Helloworld " ); print( " AxhSystem:GetMessagereturn: " ..AxhSystem:GetMessage()); print( " now,enteranumbertochangeAxhSystem'snumber: " ); num = io.read( " *number " ); print( " youenter: " ..num); print( " settoAxhSystem " ) AxhSystem:SetNumber(num); print( " AxhSystem'snewnumber= " ..AxhSystem:GetNumber()); functionfactorial(n) if (n == 0 )then return 1 ; else return n * factorial(n - 1 ); end end
C++代碼如下:
class CAxhSystem ... { public : CAxhSystem():m_nNumber( 0 ) ... { memset(m_szMsg, 0 , sizeof (m_szMsg)); } ~ CAxhSystem() ... { } void SetNumber( int num) ... { m_nNumber = num; } int GetNumber() ... { return m_nNumber; } void SetMessage( const char * szMsg) ... { if (szMsg) _tcsncpy(m_szMsg,szMsg, 256 ); } char * GetMessage() ... { return m_szMsg; } protected : int m_nNumber; char m_szMsg[ 256 ]; } ; CAxhSystemg_system; LuaStateOwnerg_state; LuaObjectg_globalObj; int InitLua() ... { g_state -> OpenLibs(); g_globalObj = g_state -> GetGlobals(); return 0 ; } int RegisterObject() ... { LuaObjectaxhmetaobj = g_globalObj.CreateTable( " AxhMetaTable " ); axhmetaobj.SetObject( " __index " ,axhmetaobj); // registerfunctor axhmetaobj.RegisterObjectDirect( " SetNumber " ,( const CAxhSystem * ) 0 ,CAxhSystem::SetNumber); axhmetaobj.RegisterObjectDirect( " GetNumber " ,( const CAxhSystem * ) 0 ,CAxhSystem::GetNumber); axhmetaobj.RegisterObjectDirect( " SetMessage " ,( const CAxhSystem * ) 0 ,CAxhSystem::SetMessage); axhmetaobj.RegisterObjectDirect( " GetMessage " ,( const CAxhSystem * ) 0 ,CAxhSystem::GetMessage); // getluaobject LuaObjectluasys = g_state -> BoxPointer( & g_system); luasys.SetMetaTable(axhmetaobj); g_globalObj.SetObject( " AxhSystem " ,luasys); return 0 ; } int _tmain( int argc,_TCHAR * argv[]) ... { InitLua(); RegisterObject(); g_state -> DoFile( " Alternate.lua " ); LuaFunction < int > factorial = g_state -> GetGlobal( " factorial " ); printf( " Nowcall'factoral'inAlternate.lua,enteranumber: " ); int number; scanf( " %d " , & number); printf( " Youennter%d,it'sfactorial=%d " ,number,factorial(number)); return 0 ; }
OK,到這里已經可以在lua和c++之間做一些交互了,可以根據需要實現我們的目標了。 接下來我要好好學習lua了,不然沒辦法用它來寫復雜的邏輯。 <--!版權所有foruok,轉載注明出處!-->

LuaPlus學習(四)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 网站一级片| 日本永久免费 | 99国产精品久久久久久久... | 中文字幕精品1在线 | 亚洲情综合五月天 | 日本tv欧美tv天堂 | 日本欧美中文字幕 | 日韩一区三区 | 欧美日韩一二三 | 福利不卡 | 一级一级毛片免费播放 | 99亚洲| 欧美做爰孕妇群 | 国内精品久久久久久久久 | 国产精选在线播放 | 成人午夜性视频欧美成人 | 99久久精品全部 | 国产一级特黄全黄毛片 | 国产视频中文字幕 | 久久精品夜夜夜夜夜久久 | 毛片毛片免费看 | 亚洲精品日韩在线一区 | 草久久 | 久久激情综合网 | 99热精品久久只有精品黑人 | 日本一级在线观看视频播放 | 亚洲欧美日韩中文字幕网址 | 久久er99热这里只是精品 | 中文精品久久久久国产网站 | 欧美国产中文字幕 | 久久国产综合尤物免费观看 | 色偷偷91久久综合噜噜噜噜 | 黄色网在线| 亚洲国产精品婷婷久久久久 | 国产日韩欧美在线观看不卡 | 亚洲狠狠97婷婷综合久久久久 | 国产aav| 奇米欧美成人综合影院 | 欧美一级全部免费视频 | 国产五月色婷婷六月丁香视频 | 日韩色在线 |