Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58480
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-26 15:04
文章分类

全部博文(13)

文章存档

2015年(13)

我的朋友

分类: Android平台

2015-05-25 12:30:40

  花了近两个小时,用上了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++是做了不少工作。

阅读(2229) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~