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__*/
#define _TARRAY_H__
extern int g_Arr[10];
#endif/*_TARRAY_H__*/
3.编写pkg文件,内容如下:
$#include "tarray.h"
extern int g_Arr[10]@Arr;
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;
}
#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
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条评论, 我也要评论