小试tolua++ 0.6

2280阅读 0评论2015-05-25 karma303
分类:Android平台

  花了近两个小时,用上了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脚本交给虚拟机跑。其实可以更简单的,我是这样:

点击(此处)折叠或打开

  1. 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上操作的:

点击(此处)折叠或打开

  1. D:\tolua\src\tests>lua
  2. Lua 5.1 Copyright (C) 1994-2006 Lua.org, PUC-Rio
  3. > require"tarray"
  4. > for i=1,10 do print(a[i]) end
  5. 2
  6. 3
  7. 4
  8. 5
  9. 6
  10. 7
  11. 8
  12. 9
  13. 10
  14. stdin:1: array indexing out of range.
  15. stack traceback:
  16. [C]: ?
  17. stdin:1: in main chunk
  18. [C]: ?
  19. >
注意几点:
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++是做了不少工作。

上一篇:模仿一下tolua++ 0.5
下一篇:tolua++生成的胶水代码是怎样的 0.5