利用tolua++導出類到lua中簡單方便,你可以導出靜態成員函數、普通成員函數、靜態成員變量、普通成員變量,你也可以指定類的哪些方法被導出。你可以將具有單繼承的派生類導出,派生類可以很自然地訪問基類的方法。更多的細節,請參考tolua++的在線文檔。首先生成實際的c++頭文件,定義我們要導出的類。tclass.h內容如下:#ifndef_TESTCLASS_H#define_TESTCLASS_H#include

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

tolua++初探(三)

系統 1912 0
<將簡單C++類導出到lua> 利用tolua++導出類到lua中簡單方便,你可以導出靜態成員函數、普通成員函數、靜態成員變量、普通成員變量,你也可以指定類的哪些方法被導出。你可以將具有單繼承的派生類導出,派生類可以很自然地訪問基類的方法。更多的細節,請參考 tolua++的在線文檔 。 首先生成實際的c++頭文件,定義我們要導出的類。tclass.h內容如下:
#ifndef_TESTCLASS_H #define _TESTCLASS_H #include < string .h > class CNumber ... { // tolua_export public : // tolua_begin CNumber():m_nNum( 0 ) ... { } CNumber( int num):m_nNum(num) ... { } ~ CNumber() ... { } void SetNumber( int num) ... { m_nNum = num; } int GetNumber() ... { return m_nNum; } int Add( int num) ... { m_nNum += num; return m_nNum; } // tolua_end protected : int m_nNum; } ; // tolua_export // tolua_begin class CMessage ... { // tolua_end public : // tolua_begin CMessage() ... { strcpy(m_szMessage, " initialmessage " ); } CMessage( char * initmsg) ... { if (initmsg) strncpy(m_szMessage,initmsg, 256 ); } ~ CMessage() ... { } void SetMessage( char * msg) ... { if (msg) ... { strncpy(m_szMessage,msg, 256 ); } } char * GetMessage() ... { return m_szMessage; } void ShowMessage() ... { printf( " thismessageisprintedinc++codewhenluacallShowMessage:%s " ,m_szMessage); } // tolua_end protected : char m_szMessage[ 256 ]; } ; // tolua_export #endif
為了方便,我把實現也放在了頭文件中。 接下來定義pkg文件,tclass.pkg。
$#include " tclass.h " class CNumber ... { // tolua_export public : // tolua_begin CNumber(); CNumber( int num); ~ CNumber( void ); void SetNumber( int num); int GetNumber( void ); int Add( int num); // tolua_end } ; // tolua_export // tolua_begin class CMessage ... { // tolua_end public : // tolua_begin CMessage( void ); CMessage( char * initmsg); ~ CMessage( void ); void SetMessage( char * msg); char * GetMessage(); void ShowMessage(); // tolua_end } ; // tolua_export
和我們的第一個數組的例子一樣,包含實際的C頭文件,用tolua++的語法聲明你想導出的部分。在導出類的時候,構造函數被映射到lua中的new,析構函數被映射為delete。他們的用法可以在后面的lua代碼中看到。接下來就是用tolua++.exe生成用于完成“導出類到lua”功能的CPP文件了。
tolua ++ .exe - ntclass - otclass.cpptclass.pkg
把tclass.h和tclass.cpp加入到工程中。編寫驅動代碼,調用lua腳本文件。這部分如下:
#include " lua.hpp " #include " tclass.h " int tolua_tclass_open(lua_State * ); int _tmain( int argc,_TCHAR * argv[]) ... { lua_State * L = luaL_newstate(); luaopen_base(L); tolua_tclass_open(L); luaL_dofile(L, " ../scripts/classtest.lua " ); lua_close(L); return 0 ; }
編寫lua腳本文件classtest.lua,內容如下:
print( " nowinclasstest.lua! " ) -- new aCNumberObject print( " nowallocateaCNumberObject: " ) num = CNumber: new () num2 = CNumber: new ( 222 ) print( " init,num: " ..num:GetNumber()) print( " init,num2: " ..num2:GetNumber()) print( " nowcallSetNumber(6) " ) num:SetNumber( 6 ) print( " nowthenum: " ..num:GetNumber()); num:delete() print( " numisdeleted,accessGetNumberisinvalid! " ) print( " invalidcall,result: " ..num:GetNumber()) -- new aCMessageObject msg = CMessage: new () print( " initmsg: " ..msg:GetMessage()) print( " nowchangethemsgbycallmsg:SetMessage('changedmessage') " ) msg:SetMessage( " changedmessage " ) print( " nowmsg: " ..msg:GetMessage()) msg:ShowMessage() msg:delete() print( " msgisdeleted,accessGetMessageisinvalid! " ) print( " inivalidcall,result: " ..msg:GetMessage())
OK,簡單的幾步工作,我們已經可以在lua中使用C++類了。有兩點要注意: 1.pkg文件要包含實際的C頭文件。 2.pkg文件中要聲明需要導出到lua中的類,類名與實際的C頭文件中的一樣,只聲明你想導出的部分即可。

tolua++初探(三)


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 最新精品在线 | 日韩精品免费一级视频 | 日韩欧美一区二区三区四区 | 波多野结衣视频免费观看 | 理论片午午伦夜理片在线播放 | www.91在线 | 免费看a网站| 欧美成人18性 | 五月亚洲综合 | xy110.app| 日本中文字幕免费 | 日本黄页在线观看免费 | 久久久久久久久久综合 | 黑人性xxxⅹxxbbbbb | 亚洲欧洲一区二区 | 久久久久性视频 | 玖玖在线免费视频 | 神马久久蜜桃 | 欧美第一色 | 国产成人精品免高潮在线观看 | 免费一级毛片在线观看 | 国产精品极品美女在线观看免费 | 97人人澡人人爽91综合色 | 新版天堂资源中文在线 | 一级做一级爱a做片性视频视频 | 亚洲精品在线播放 | 天天摸日日碰天天看免费 | 色四虎 | 97久久超碰 | 精品一区二区三区在线观看国产 | 色精品 | 国产在线不卡午夜精品2021 | 国内精品一区二区在线观看 | 免费视频二区 | 国产精品一二三区 | 欧美日本另类xxx乱大交 | 色呦呦tv | 日本中文字幕高清 | 丁香花成人另类小说 | 欧美综合自拍亚洲综合网 | www.999abab.com|