C调Lua】的更多相关文章

转自:http://foredoomed.org/blog/2013/12/07/integrate-c-with-lua/ 我们在用C写程序的时候,很多情况下需要用到List,Map等集合,但是C是不原生支持这些数据结构的.碰到这种情况的话,要么自己实现一套API,要么就用别人写好的现成的类库.但是大多数情况下现有类库的API使用起来非常不舒服,自己写呢又重复造轮子,那有没有其他的办法呢?答案是肯定的.我们可以用Lua这个嵌入式脚本语言与C搭配使用,来弥补C这个古老语言的很多先天性的不足. 0…
int main1(int argc, const char * argv[]) { lua_State* L = luaL_newstate();//创建栈 luaopen_base(L); luaopen_io(L);//打开lua base,io两个库 int ret = luaL_loadfile(L,"tlua.lua");//加载tlua.lua文件 //成功后会返回0,反之返回非0:同时错误信息放到栈顶 ){ printf("load file error %s…
转自:http://blog.csdn.net/sumoyu/article/details/2592693 (一) Lua 调C函数 什么样类型的函数可以被Lua调用   typedef int (*lua_CFunction) (lua_State *L); 符合类型的函数怎样处理后才可以被Lua调用 使用lua_register或者 lua_pushfunction和lua_setglobal()把要调用的函数加入到lua状态机中. #define lua_register(L,n,f)…
转自http://my.oschina.net/mayqlzu/blog/113528 问题: 最近lua很火,因为<愤怒的小鸟>使用了lua,ios上有lua解释器?它是怎么嵌入大ios中的呢?lua的官网说:"lua is an embeddable scripting language",怎么理解呢?怎么在你自己的程序里嵌入lua解释器呢?如果可以在我的程序中嵌入了lua,那是否意味着我可以从此用lua编程了呢? 带着这些问题,打算在我的windows笔记本上做个实验…
项目开发的脚本层用的是Lua,引擎用的是C++.但是经理不给开放引擎层的代码.刚好最近项目空闲,安排了学习C++跟Lua的通信. 一.C++与Lua数据交互 数据交互主要是通过C API来实现 首先,要加入Lua的头文件 extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib" } 也可以用#include "lua.hpp"代…
没有其他的,搞搞cocos2dx的lua文字,话lua这件事情在几年前学过一段时间.还曾对自己c++介面,我已经做了一些小东西.只是时间的流逝,模糊记忆. 拿起点功夫和成本.下面是我的一些经验. cocos2dx运用tolua++来制作的lua接口,tolua++文档不多,网上的一些文章也是答非所问,所以自己看代码是最佳学习途径. cocos2dx操作lua的类是CCLuaEngine,当中实现了载入与实行lua脚本.以及操作lua stack. LuaCocos2d.cpp非常主要,文件的开头…
什么样类型的函数可以被Lua调用 typedef int (*lua_CFunction) (lua_State *L); 符合类型的函数怎样处理后才可以被Lua调用 使用lua_register或者 lua_pushfunction和lua_setglobal()把要调用的函数加入到lua状态机中. #define lua_register(L,n,f) / (lua_pushcfunction(L, f), lua_setglobal(L, n)) lua_register的第二个参数就是L…
记录下吧,断断续续读了几周,收益还是很多的. 推荐阅读顺序: 1) 基础数据类型 lstring.c ltable.c lobject.c lfunc.c lstate.c 2)  标准库(这个相对简单) lbasiclib.c lstrlib.c ltablib.c lmathlib.c loslib.c liolib.c loadlib.c lcorolib.c 3)  lua 核心 ltm.c  ldo.c lvm.c lopcodes.c 这个有点难理解, 多读几遍,每次总会有收获的.我…
目录 1.前期准备 2.测试go代码 3.完成的一个学习项目 4.总结 1.前期准备 1.第三方库:https://github.com/aarzilli/golua 2.下载lua源码:https://www.lua.org/ftp/lua-5.1.4.tar.gz 3.编译lua: 在windows下使用"mingw32-make.exe mingw test" 在Linux下使用"make linux test" 将得到的liblua.a放到github.co…
之前搞过一下systemtap(systemtap折腾笔记),可惜很快琐事缠身,没有继续搞下去.最近偷空搞了一下,有点意思. 章大大的思路,是用perl生成systemtap脚本,从/proc/$pid/maps里面扫出liblua.so的地址.然后hook这个地址里,以luaL_*和lua_*开头的lua虚拟机C函数.hook住的函数里,都会有个参数L,这个L表示lua的虚拟机.接下来就是按lua的C代码撸一遍,看看怎么从L的内存结构里,dump出整个lua的运行栈.相当于在systemtap…