先是下载tolua++,它的官网没能打开(404),从csdn下了一份,
tolua++.zip。cu上不支持tar.bz2,只好改成zip。版本似乎是1.0.93.
先是编译,参照这篇文章,http://blog.csdn.net/summerhust/article/details/6451135。
虽然是参照,但它是用vs编译的,我是用cygwin。
在src/bin目录编译processpg.exe的时候,不要把那个xx_default.c链接进去了。
上面的所谓配置过程,就是编译出来processpg.exe(用来处理pkg文件),编译出来tolua.lib(先这样命令吧,大概就这意思,以后编译项目的时候,要把这个tolua.lib也link进去。
配置完了,就来试试src/tests里的tarray.c,写demo的人,它的意思,大概是把它编译成一个exe文件,运行它,从c里开一个Lua虚拟机,从c里把一个lua脚本交给虚拟机跑。其实可以更简单的,我是这样:
点击(此处)折叠或打开
- gcc -o tarray.dll tarray.c tarraybind.c -ID:/include/tolua -LD:/lib/tolua -ID:/include/lua/ -LD:/lib/lua/ -llua -ltolua -shared
点击(此处)折叠或打开
- D:\tolua\src\tests>lua
- Lua 5.1 Copyright (C) 1994-2006 Lua.org, PUC-Rio
- > require"tarray"
- > for i=1,10 do print(a[i]) end
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- stdin:1: array indexing out of range.
- stack traceback:
- [C]: ?
- stdin:1: in main chunk
- [C]: ?
- >
1,require之前,把tarray.lua换个名字,不然它会抢先tarray.dll被load。
2,其实生成tarray.dll时候,应该是用不着tarray.c,只需要processpg -o tarraybind.c tarray.pkg生成的tarraybind.c,但需要自己加lua的头文件,懒得去试了。(13:13更新:还是需要tarray.c的,它里面定义了c的那些结构体,数组变量,不然lua部分的访问就无从谈起。)
从上面也能顺便看出,tolua++做的还是挺周到的,数组访问的时候,把Lua的数组下标习惯换成了c的。
这样测试的优点是直接在命令行上敲lua代码,随心所欲。
试试这样写:
arr.name="123"
print(arr.name)
你会发现输出123。arr可是一个userdata呀,看来tolua++是做了不少工作。