There is no end, it is just the beginning! - A Game Developer's Notes
在使用toLua重構腳本系統時,遇到了一些問題,在此將其解決方案做一下備忘。一、How to complie 在linux下只需簡單地執行make即可。而在windows平臺下,情況會稍微復雜點。由于toLua的產出分為exe和lib,其中exe用于自動產生bind代碼,lib作為腳本系統的連接庫使用。為了產生exe文件,需要創建一個win32 console工程,將src\lib和src\bin的.h、.c添加到這個工程中來,然后編譯(當然別忘了設置鏈接lua庫);而產生lib,則需要創建static lib工程,然后將src\lib下的source添加進來編譯(同樣別忘了設置鏈接lua庫)。二、How to use(How to transplant) 在src\tests下有示例代碼,其中.pkg文件內容與header file幾乎一致,只是多了toLua處理指令(以$開頭),其詳細說明可參考“tolua++ - Reference Manual”。為了避免將眾多的header files內容復制到.pkg,我們使用了$cfile指令,這樣只需在每個需要導出到lua中的頭文件所對應的.pkg文件中添加一條$cfile指令即可,但世上沒有免費的午餐,這樣做有個前提:需要在頭文件中添加導出指示符(以注釋方式給出)。需要注意的是:1).pkg文件必須以一個新行結束文件;2)使用導出指示符時,//tolua_export需位于類名繼承關系之后。對于導出單個或少數方法,需要在方法聲明前加//tolua_begin,結束加//tolua_end。對于如果//tolua_end不在類定義最后(即};之后)的情況,需在類定義最后加//tolua_export;3)如需在腳本中生成對象,則需導出構造和析構函數。下面舉具體例子加以說明:
_Test.h和_Test.cpp是用ToLua -o _Test.cpp -H _Test.h Test.pkg命令產生的。
補充:針對在腳本中使用已經創建好的C++對象,需要使用tolua_pushusertype和lua_setglobal。在上面例子中,如果只想在腳本中調用指定對象的GG方法,則只需用tolua_begin和tolua_end來包括GG(),然后修改main.cpp和腳本:
三、How to automatize
Visual studio為每個工程提供了配置“Pre-Build Event”、“Pre-Link Event”以及“Post-Build Event”的機會,她位于工程屬性的“Build Events”條目中。為了在每次編譯前,自動產生lua綁定的相關代碼,可在“Command Line”中寫下我們在命令行中輸入的toLua命令。
posted on 2009-01-18 13:56 Heath 閱讀(2080) 評論(2) 編輯 收藏 引用 所屬分類: Script Programming
這媞 久久国产精品久久国产精品| 日日狠狠久久偷偷色综合0| 欧美黑人激情性久久| 久久精品无码专区免费东京热| 久久香蕉国产线看观看精品yw| 日本免费一区二区久久人人澡| 亚洲精品美女久久久久99小说| 麻豆AV一区二区三区久久 | 99久久国语露脸精品国产| 精品久久久久久国产91| 日产精品久久久久久久| 国产精品久久久久久久久鸭| 国产精品久久久久久久app| 国产一区二区三区久久精品| 久久99精品久久久大学生| 91精品国产综合久久香蕉| 欧美一区二区三区久久综| 色婷婷久久久SWAG精品| 伊人久久大香线蕉精品| 久久国产热精品波多野结衣AV| 欧美午夜精品久久久久久浪潮| a高清免费毛片久久| 亚洲AV无码1区2区久久| 亚洲精品WWW久久久久久| 99精品伊人久久久大香线蕉| 99久久精品日本一区二区免费| 精品国产日韩久久亚洲| 久久亚洲2019中文字幕| www亚洲欲色成人久久精品| 国产精品久久免费| 久久免费小视频| 99久久精品免费| 久久成人永久免费播放| 久久亚洲精品中文字幕| 日本高清无卡码一区二区久久| 国产亚洲美女精品久久久| 久久精品国产久精国产| 久久国产成人精品麻豆| 精品久久久久久久| 精品久久久久久无码中文字幕 | 久久妇女高潮几次MBA|