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

tolua++初探(二)

系統 1653 0

tolua++的源碼包中有很多測試例子。這里我用更最簡單的例子來學習。

第一個例子是數組。僅僅是把C++中的一個數組導出到Lua中,可以在腳本中訪問并修改。

tarray.pkg文件:

      $#include "tarray.h"
extern int g_Arr[10]@Arr;
    

很簡單, $#include " tarray.h ",包含實際的C頭文件,這個語句會去掉$符號,直接插入到tolua++.exe生成的C文件中。文檔中說$lfile,$cfile,$ifile會特別處理,我試驗了下,不像說的那個樣子。

extern int g_Arr[10]@Arr,tolua++會分析這一句,將g_Arr[10]映射到lua中的Arr上。其中@后面是你想在lua中看到的變量名。

tarray.h文件也只有一句:

      #ifndef _TESTARRAY_H
#define _TESTARRAY_H
extern int g_Arr[10];
#endif
    

g_Arr的實例在一個cpp文件中。

用tolua++.exe生成用于導出c++對象到lua腳本中的CPP文件:

tolua ++ .exe - ntarray - otarray.cpptarray.pkg

-n tarray選項指定包的名字為tarray。如果不用-n顯式指定,tolua++.exe會生成一個和pkg文件名一樣的包名,同時生成tolua_**_open(lua_State*)入口函數。

將此CPP文件加入工程。

在工程中加入lua5.1.lib,tolua++.lib,包含lua.hpp,tolua++.h,然后寫點測試代碼,就可以編譯了。程序主文件array.cpp:

          #include "stdafx.h"
    #include "lua.hpp"
    #include "tarray.h"

    int tolua_tarray_open (lua_State* tolua_S);
    int g_Arr[10]={0};
    int _tmain(int argc, _TCHAR* argv[])
    { 
        lua_State * L = lua_open();
        int i=0;
        for(i=0; i<10; i++) g_Arr[i] = i;

        luaopen_base(L);
        tolua_tarray_open(L);
        luaL_dofile(L, "../scripts/array.lua");

        printf("now in c++, re-show Arr:");
        for(i=0; i<10; i++) printf("%d ", g_Arr[i]);
        printf(" ");

        lua_close(L);
        return 0;
    }
    


luaopen_tarray_open是必須要調用的,tolua++.exe根據你命令行中指定的名字生成tolua_**_open函數。該函數用來導出c++對象到lua腳本中,所以必須在你執行lua腳本之前調用。函數的原型在由tolua++.exe生成的cpp文件中。

腳本文件array.lua內容如下:

          print("now in lua script!   try to print 'Arr' by name:")
    print(Arr)
    --print contents of Arr
    print("now print 'Arr':")
    for i=0,9 do print(Arr[i]) end

    --change contents of Arr
    print("now change the Arr.")
    for i=0,9 do Arr[i] = i*2 end
    

第一個例子到此為止。編譯后可以進行測試了。

我針對DEBUG和release版本生成了不同的DLL和LIB文件,好用于測試。

總結一下步驟:

  1. 編寫C頭文件,定義想導出的對象
  2. 編寫pkg文件,包含之前的C頭文件,用tolua++可識別的規則定義你要導出的對象
  3. 用tolua++.exe生成CPP文件
  4. 將3生成的文件,1中的頭文件,tolua++的頭文件,lua的頭文件及相關的庫加入工程。
  5. 編寫lua腳本文件。

tolua++初探(二)


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 激情综合网俺也去 | 天天色官网 | 欧美精品综合 | 久久亚洲春色中文字幕久久 | 91久久99热青草国产 | 激情五月婷婷 | 亚洲人成在线精品 | 一级免费视频 | 精品久久久久久久久久久久久久久 | 精品一卡2卡三卡4卡乱码免费 | www.4hu影院| 亚洲欧洲视频在线观看 | 欧美福利视频在线观看 | 欧美激情 在线 | 老司机精品视频个人在观看 | 99欧美精品| 91无限资源 | 国产综合成色在线视频 | 国产色婷婷精品综合在线观看 | 色综合加勒比 | 国产日韩欧美中文 | 亚洲一区在线观看视频 | 中文字幕在线一区二区三区 | 国产乱子伦一区二区三区 | 一级毛片男女做受 | 久久精品国产视频 | 欧美国产精品一区二区 | 波多野结衣一区二区 | 波多野结衣在线网站 | 亚洲视频免费在线播放 | 欧美一区二区黄色片 | 九九热国产精品视频 | 成人免费视频网站 | 欧美日韩一区二区三区在线观看 | 五月久久婷婷综合片丁香花 | 国产精品成人一区二区 | 精品一区二区三区免费 | 丝袜美腿一区 | 久草在线观看首页 | 久久青草精品免费资源站 | 亚洲精品成A人在线观看拍拍拍 |