马上面临毕业设计,打算做点跟网游有关的,先从做周边工具开始,目前正在做一个协议序列化和反序列化的东西,广告一波先: https://github.com/Anti-Magic/rproto
目前非常简陋,功能还没做完,不要当真。。
因为目标是绑定到lua,作为一个独立的库,不想对项目有依赖,这样的好处是客户端和服务端都可以方便的拿来用,所以打算手动绑定。
我夜观天象发现,到目前为止网上找不到针对lua5.3的这么简明扼要且完整的示例,转载注明出处:http://www.cnblogs.com/wolfred7464/p/5147675.html
由于lua提供的require函数可以引入C语言的动态链接库,对于使用者来说,不需配置,只要调用require就可以,肯定是最简单的方法。(其实iOS不能这样做的,唉,习惯就好)
首先读者需要对lua提供的操作虚拟栈的函数比较熟悉,不熟悉的先翻手册吧:http://cloudwu.github.io/lua53doc/manual.html
先上一段简单的示例,功能是使用C语言编写一个计算2个浮点数之和的add函数,绑定到lua由lua调用:
1 #include "lua.h" 2 #include "lualib.h" 3 #include "lauxlib.h" 4 #include "luaconf.h" 5 6 double add(double x, double y) { 7 return x+y; 8 } 9 10 static int ladd(lua_State* L) { 11 double x = luaL_checknumber(L, 1); 12 double y = luaL_checknumber(L, 2); 13 lua_pushnumber(L, add(x+y)); 14 return 1; 15 } 16 17 int luaopen_xxx(lua_State* L) { 18 luaL_checkversion(L); 19 20 struct luaL_Reg funcs[] = { 21 {"add", ladd}, 22 {NULL, NULL} 23 }; 24 luaL_newlib(L, funcs); 25 return 1; 26 }