tolua++初探(二)

tolua++初探(二),第1张

概述    tolua++的源码包中有很多测试例子。这里我用更最简单的例子来学习。         第一个例子是数组。仅仅是把C++中的一个数组导出到Lua中,可以在脚本中访问并修改。         tarray.pkg文件:    $#include "tarray.h"extern int g_Arr[10]@Arr;      很简单,$#include "tarray.h",包含实际的C头

    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_Hextern int g_Arr[10];#endif

    g_Arr的实例在一个cpp文件中。    

    用tolua++.exe生成用于导出c++对象到lua脚本中的CPP文件:

tolua ++ .exe  - n tarray  o tarray.cpp tarray.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文件,好用于测试。

    总结一下步骤:    

    编写C头文件,定义想导出的对象         编写pkg文件,包含之前的C头文件,用tolua++可识别的规则定义你要导出的对象         用tolua++.exe生成CPP文件         将3生成的文件,1中的头文件,tolua++的头文件,lua的头文件及相关的库加入工程。         编写lua脚本文件。 总结

以上是内存溢出为你收集整理的tolua++初探(二)全部内容,希望文章能够帮你解决tolua++初探(二)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1268945.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存