聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

tolua++使用示例

2014-05-07 18:40 浏览: 2806378 次 我要评论(0 条) 字号:


1.近来想研究tolua++,正好忙里抽闲,看些文章,并做了些总结。

一.环境设置
2.下载lua5.1  并安装
3.下载tolua++/Files/API/tolua-1.0.93.tar.bz2.zip  (下载完成后,把.zip去掉)
4
.新建工程lua++(生成静态库),将tolua++解压后的tolua++-1.0.93srclib目录下的6个.c和.h文件。加
   到该工程中。并设置附加包含目录:
C:Program Files (x86)Lua5.1include
    并编译成功后,生成lua++.lib
5.打开tolua-1.0.93tolua++-1.0.93win32vc7目录下的toluapp.sln,
  设置附加包含目录:
C:Program Files (x86)Lua5.1include 
  附加库目录:
C:Program Files (x86)Lua5.1lib
  加入附加依赖项:lua5.1.lib
  最终生成到
tolua-1.0.93tolua++-1.0.93bintolua++.exe

二.测试一(变量访问)
1.新建工程NewLua
2.Tarray.h如下:

#ifndef _TARRAY_H__
#define _TARRAY_H__

extern int g_Arr[10];


#endif/*_TARRAY_H__*/

3.编写pkg文件,内容如下:
$#include "tarray.h"
extern int g_Arr[10]@Arr;

4.输入命令:
>tolua++.exe -n tarray -o tarray.cpp tarray.pkg
 -n tarray选项指定包的名字为tarray。如果不用-n显式指定,tolua++.exe会生成一个和pkg文件名一样的包名,同时生成tolua_**_open(lua_State*)入口函数。

5.将生成的tarray.cpp加入到该工程中。并且加入lua5.1.lib,
lua++.lib
  并附加包含lua的头文件目录

6.在main文件如下:
#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, "C:/Users/Administrator/Desktop/test/NewLua/NewLua/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;
}

7.新建array.lua文件如下:
print("now in lua script!   try to print 'Arr' by name:")
print(Arr)
print("now print 'Arr':")
--print contents of 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

8.打印结果如下:
now in lua script!   try to print 'Arr' by name:
table: 008168E0
now print 'Arr':
0
1
2
3
4
5
6
7
8
9
now change the Arr.
now in c++, re-show Arr:0 2 4 6 8 10 12 14 16 18



2014-05-07 14:06 发表评论


网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复