lua userdata】的更多相关文章

1 如何封装c++的指针 对于c++对象的lua包装,我们可以使用 template<typename T> struct luaUserdataWrapper {  luaUserdataWrapper() {}  luaUserdataWrapper(const T& d) : data(d) {} T data;  }; class CObject { public: int v[10];}; typedef luaUserdataWrapper<CObject*>…
#define metatablename "studentlib.06-11-11" /** * utility functions */ static int pusherror(lua_State *L, const char *info = NULL) { lua_pushnil(L); if(info) { lua_pushfstring(L, "%s :%s", info, strerror(errno)); } else { lua_pushstrin…
一.配置Lua C++交互环境 1.下载Lua 包环境 地址: https://www.lua.org/download.html ,我们这里用的是5.4.2版本. 2.新建C++ 控制台应用程序 3.导入Lua 源码 1)导入Lua 源码到同级目录(这样做为了Main函数所在类添加Lua 的C 类的时候直接可以include,不需要考虑目录层级问题) 打开的目录里,将5.4.2 的lua包里的 src目录里的文件全部拷到此目录 2)添加Lua 源码 选中刚刚导入的Lua文件 3)编译 这时,点…
前言 在看了uwa之前发布的<Unity项目常见Lua解决方案性能比较>,决定动手写一篇关于lua+unity方案的性能优化文. 整合lua是目前最强大的unity热更新方案,毕竟这是唯一可以支持ios热更新的办法.然而作为一个重度ulua用户,我们踩过了很多的坑才将ulua上升到一个可以在项目中大规模使用的状态.事实上即使到现在lua+unity的方案仍不能轻易的说可以肆意使用,要用好,你需要知道很多. 因此,这篇文章是从一堆简单的优化建议里头,逐步挖掘出背后的原因.只有理解了原因,才能很清…
转自:http://www.cnblogs.com/ringofthec/archive/2010/10/26/luabindobj.html 虽然有tolua++, luabind等等, 不过自己手动绑定还是有助于更深的了解lua的机制, 以及锻炼自己如何使用lua提供的现有机制来实现自己的需求 [部分内容来自网络, 我这里就是做一些总结和扩展, 感谢分享知识的人:)] 定义目标: 有一个c++类 class Foo { public: Foo(int value) { _value = va…
书接上一回,说到要继续丰富对类型的处理.那么如何才能做到呢,应该是要支持自定义的,所以这一回要讲的就是在前面的基础上,增加支持自定义部分,其中包含以下几个部分 函数的默认参数设置,包括有几个默认参数和如何设置这些默认参数: 可以做为返回值的参数下标(Lua支持多值返回): 如何将函数的结果和当做返回值的函数的参数压入到Lua: 如何将函数的结果压入到Lua中(看起来和上一点重复,默认情况下是调用上一条进行压入Lua): 将当做返回值的函数的参数(所有需要返回的)压入Lua: 如何确定中间存放函数…
Lua 之 userdata 在Lua中可以通过自定义类型(user data)与C语言代码更高效.更灵活的交互,从而扩展Lua能够表达的类型. full userdata full userdata 表示一个原始的内存块,可以存储任何东西,它是一个类似于table的object,必须事先创建(也可以被垃圾收集器回收),它也有自己的metatable,它只等于其自身. 可以为每种full userdata 创建一个唯一的元表,来辨别不同类型的userdata,每当创建了一个userdata后,就…
[话从这里说起] 在我发表<Lua中的类型与值>这篇文章时,就有读者给我留言了,说:你应该好好总结一下Lua中的function和userdata类型.现在是时候总结了.对于function,我在<Lua中的函数>这篇文章中进行了总结,而这篇文章将会对Lua中的userdata进行仔细的总结.对于文章,大家如果有任何疑议,都可以在文章的下方给我留言,也可以关注我的新浪微博与我互动.学习,就要分享,我期待你的加入. [userdata是啥?] userdata是啥?简单直译就是用户数…
lua作为脚本于要能够使用宿主语言的类型,不管是宿主基本的或者扩展的类型结构,所以Lua提供的UserData来满足扩展的需求.在Lua中使用宿主语言的类型至少要考虑到几个方面: 数据内存 生命周期 数据操作 下面的内容主要参考<Lua程序设计>,数据保存在Lua堆栈中,通过Metatable对数据进行操作,并通过Lua的Gc进行回收内存. 1 Full UserData void *lua_newuserdata (lua_State *L, size_t size); This funct…
这一段时间看了<programming in lua>中的第28章,看一遍并不是很难,但是只是朦胧的感觉,雾里看花,水中望月.最终还是决定敲出来自己看看,练练手,结果受益不少,也遇到了一些问题,记在这里.自己做一个总结,也希望能帮助和我一样lua的初学者. 1. 书上并没有写清楚对于CAPI的制作和使用内容.主要包括dll的生成,以及使用 (1)dll生成. 直接用vs新建一个dll工程,要记得包含依赖路径.如下图所示,包含你的lua安装路径. 工程名要和库的最终名字一致(默认是一致的).lu…