花了近两个小时,用上了tolua++。
先是下载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
注意下面是在windows的cmd上操作的:
-
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++是做了不少工作。
阅读(2229) | 评论(0) | 转发(0) |