LUA编程
南方的小清湖
这个作者很懒,什么都没留下…
展开
-
Lua和C++交互机制详解
一、Lua堆栈要理解Lua和C++交互,首先要理解Lua堆栈。简单来说,Lua和C/C++语言通信的主要方法是一个无处不在的虚拟栈。栈的特点是先进后出。在Lua中,Lua堆栈就是一个struct,堆栈索引的方式可是是正数也可以是负数,区别是:正数索引1永远表示栈底,负数索引-1永远表示栈顶。如图: lua的栈类似于以下的定义, 它是在创建lua_State的原创 2016-11-14 09:19:59 · 2152 阅读 · 2 评论 -
Lua教程(二十):Lua调用C函数
Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数类型仅仅包含一个表示Lua环境的指针作...原创 2018-03-09 17:59:45 · 5547 阅读 · 0 评论 -
Lua的线程和状态
那不是真的多线程Lua不支持真正的多线程,这句话我在《Lua中的协同程序》这篇文章中就已经说了。根据我的编程经验,在开发过程中,如果可以避免使用线程,那就坚决不用线程,如果实在没有更好的办法,那就只能退而用之。为什么?首先,多个线程之间的通信比较麻烦,同时,线程之间共享内存,对于共享资源的访问,使用都是一个不好控制的问题;其次,线程之间来回切换,也会导致一些不可预估的问题,对性能也是一种损耗。转载 2017-05-21 22:05:51 · 876 阅读 · 0 评论 -
Lua API 小记——— lua值, 栈解释
1. 理解lua的栈到底是什么? lua的栈类似于以下的定义, 它是在创建lua_State的时候创建的: TValue stack[max_stack_len] // 欲知内情可以查 lstate.c 的stack_init函数 存入栈的数据类型包括数值, 字符串, 指针, talbe, 闭包等, 下面是一个栈的例子:原创 2017-05-19 15:42:52 · 329 阅读 · 0 评论 -
lua API 小记——— lua虚拟机初始化)
1. 创建lua虚拟机lua_State *lua_newstate (lua_Alloc f, void *ud)创建一个新的独立的lua虚拟机. 参数指定了内存分配策略及其参数, 注意, 让用户可以定制内存分配策略是十分有用的, 比如在游戏服务器端使用lua, 我做过一次统记lua在运行的时候会大量的分配大小小于128字节的内存块, 在这样的环境下, 使用lua原生的分配器就不太适合了原创 2017-05-19 15:40:30 · 462 阅读 · 0 评论 -
Lua中的协同程序
前言协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈、局部变量和指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。从概念上讲,线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。就是说,一个具有多个协同程序的程序在任意时刻只能运行一个协同程序,并且正在运行的协同程序只会在其显式地要求挂起时,它的执行才会暂停。转载 2016-11-15 15:06:35 · 375 阅读 · 0 评论 -
LUA———函数重名
在C语言或其他静态语言中,会对函数名进行检查,不允许重名的函数出现,但在lua,重名的函数是允许出现的,这就给我们的编码埋下一些隐患。当项目达到一定规模的时候,就很难保证不出现重名函数。那重名的函数会导致什么问题呢?我们看下面的代码:1234567891011原创 2016-06-21 20:25:35 · 4369 阅读 · 0 评论 -
LUA———Lua和C 区别
1.lua和c有两种关系: 一种是在lua中调用C的函数,C称为库代码,一种是C中调用lua,C就称为应用程序代码,此时C中包含了lua的解释器。注意在C++中,通常要把lua的一些头文件定义在extern “c”中,因为他们是C语言实现的。2.Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库。C API是原创 2016-06-21 20:58:57 · 7670 阅读 · 0 评论 -
Lua source code 下载
Lua is free software distributed in source code. It may be used for any purpose, including commercial purposes, at absolutely no cost.All versions are available for download. The current versi原创 2016-08-05 22:57:05 · 587 阅读 · 0 评论 -
浅析Lua调试器的实现
摘要本文简单介绍了如何实现一个Lua调试器,实现Lua调试器的目的仅仅是寄希望借此熟悉Lua源代码。所编写的Lua调试器功能越强,表明你对Lua源码越了解。正文先前用lua写过一些应用,感觉Lua是一个很小巧的语言,Lua源代码无疑是研究语言相关的首选。“Lua虽小,五脏俱全”!为了研究Lua源代码,就打算着手写一个简单的Lua调试器,发现其中还是有些收获的,特记录如下。作为一个调原创 2016-11-12 13:23:02 · 2090 阅读 · 0 评论 -
C/C++ Lua Parsing Engine
catalog1. Lua语言简介2. 使用 Lua 编写可嵌入式脚本3. VS2010编译Lua4. 嵌入和扩展: C/C++中执行Lua脚本5. 将C++函数导出到Lua引擎中: 在Lua脚本中执行C++函数6. 将C函数导出到Lua引擎中: 在Lua脚本中执行C函数7. C++ Function Library For Lua8. Lua、Python嵌入式语言引擎原创 2016-11-12 13:32:30 · 1061 阅读 · 0 评论 -
Windows平台:lua 5.3开发调试环境搭建
简介5.1 以后就没有很好的lua IDE可用了,luastudio不错但是小贵,发现有位仁兄写了个 visual studio code的lua调试插件,试了一下还不错 插件源码环境搭建去微软官方下载vscode 软件下载地址安装Lua 5.3 Debug 插件,在vscode中按Ctrl+P,输入 ext install lua-debug vscode的调试需要在一个文件夹中,随便建一个文件...转载 2018-05-20 15:55:05 · 4041 阅读 · 1 评论