一.c语言作为应用程序的一部分#include <stdio.h>
#include <string.h>
#include <lua.hpp>
#include <lauxlib.h>
#include <lualib.h>//待Lua调用的C注册函数。
static int add2(lua_State* L)
{
 //检查栈中的参            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-12 21:32:27
                            
                                39阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Q:“引用”和“引用计数”?A:“引用”既为对象的名字。比如a = {},名叫a的变量存储的值是一个”table”,”table”的名字是a;同时还可以说变量a存储着”table”的“引用”。  当“(强)引用”被创建时,对象的“引用计数”加1,只要对象的“引用计数”不为0,对象就不会被销毁,Lua的“垃圾回收系统”只回收那些“引用计数”为0的对象。Q:“强引用”和“弱引用”?A:当对象被创建时会            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-16 09:19:50
                            
                                41阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            命名参数,有的翻译为具名参数,顾名思义就是给带入函数的参数起个名字,注意这个名字是固定的。我们知道一般的语言,比如c/c++,java等参数只有在函数定义的时候才有类型和变量名,在函数调用时传入的是变量名或者实际值,这里的变量名可以相同也可以不同。// 假定有函数squire
int squire(int length, int width);
// 我们调用是可以如下调用,带入的变量名可以使a            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-22 06:43:31
                            
                                37阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            简单说说Lua中的面向对象Lua中的table就是一种对象,看以下一段简单的代码:   local tb1 = {a = 1, b = 2}           
           local tb2 = {a = 1, b = 2}           
           local tb3 = tb1            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-24 20:11:38
                            
                                56阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/XLua%E6%95%99%E7%A8%8B.md 本章节涉及到的实例均在XLua\Tutorial\LuaCallCSharp下new C#对象你在C#这样new一个对象:var newGameObj = new UnityEngine.GameObject();对应            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-05 22:46:10
                            
                                70阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在项目开发中,为了提高开发效率往往需要开发一些辅助工具。最近在公司用lua帮拓展了一个资源扫描的工具,这个工具的功能就是从原始demo下指定目标资源文件,对该文件进行读取并筛选过滤一遍然后拷贝到最终demo对应的文件目录下。我们知道要读取一个文件必须指定对应路径,而我们在一个大型游戏软件开发中每个人所提交上去的资源都是在不同文件目录下的。所以原先的做法就是手动去把路径一个一个贴出来,整合记录到一个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-23 20:37:01
                            
                                64阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Lua 源码学习笔记(4)GC参考书籍:《Lua设计与实现》作者书籍对应Github:https://github.com/lichuang/Lua-Source-Internal云风的 BLOG,Lua GC 的工作原理:https://blog.codingnow.com/2018/10/lua_gc.html云风的 BLOG,Lua GC 的源码剖析 (1):https://blog.cod            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-14 16:08:52
                            
                                48阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
              最近发现在大数据量的 lua 环境中,GC 占据了很多的 CPU 。差不多是整个 CPU 时间的 20% 左右。希望着手改进。这样,必须先对 lua 的 gc 算法极其实现有一个详尽的理解。我之前读过 lua 的源代码,由于 lua 源码版本变迁,这个工作还需要再做一次。这次我重新阅读了 lua 5.1.4 的源代码。从今天起,做一个笔记,详细分析一下 lua 的 gc 是如何实现的            
                
         
            
            
            
            表Lua的表非常灵活,尤其是结合元表,功能会非常强大,先根据下面的代码,自己找规律去理解表的用法:-- 初始化表
mytable = {}
-- 指定值
mytable[1] = "Lua"
mytable["index"] = 1    --这种写法[]内一定要加“”
mytable.abc = "abc"
print(mytable.index)    -- 1
print(mytable            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-12 22:51:24
                            
                                189阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            下载vscode 
  在拓展里install c/c++插件和code runner插件下载MINGW64编译环境 (若已安装好DEVC++,可直接在此安装文件夹里找到MINGW64)配置MINGW64环境变量 
  path—— bin 在环境变量path里添加,“D:/Dev-Cpp/MinGW64/bin/”INCLUDE—— include查看系统变量里是否存在INCLUDE若无,新建I            
                
         
            
            
            
            Lua调用C的动态库C语言可以完成一些lua不好实现的功能,当程序主体使用lua完成时,便需要掌握该技巧调用C来帮助我们达到目的,通过调用C的动态库简化操作流程。大致流程如下:使用C语言编写方法提供给lua调用将C文件打包成动态库lua导入动态库,直接调用里面的函数 文章目录Lua调用C的动态库准备工作使用C语言编写方法将C文件打包成动态库lua文件中导入动态库并调用其中函数多个返回值方法编写示例            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-01 22:38:56
                            
                                61阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Lua弱表类型和引用类型Lua有8种基本类型:nil、boolean、number、string、function、userdata、thread、table对象object:Tables、functins、threads、userdata, 其变量为引用类型引用类型:赋值、参数传递、函数返回等都操作的是这些值的引用,并不产生任何copy行为nil的主要用途就是一个所有类型之外的类型,用于区别其他            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-06 22:10:44
                            
                                214阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在项目开发中,为了提高开发效率往往需要开发一些辅助工具。最近在公司用lua帮拓展了一个资源扫描的工具,这个工具的功能就是从原始demo下指定目标资源文件,对该文件进行读取并筛选过滤一遍然后拷贝到最终demo对应的文件目录下。我们知道要读取一个文件必须指定对应路径,而我们在一个大型游戏软件开发中每个人所提交上去的资源都是在不同文件目录下的。所以原先的做法就是手动去把路径一个一个贴出来,整合记录到一个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-28 01:03:37
                            
                                269阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            弱引用table 与python等脚本语言类似地,Lua也采用了自动内存管理(Garbage Collection),一个程序只需创建对象,而无需删除对象。通过使用垃圾收集机制,Lua会自动删除过期对象。垃圾回收机制可以将程序员从C语言中常出现的内存泄漏、引用无效指针等底层bug中解放出来。我们知道Python的垃圾回收机制使用了引用计数算法,当指向一个对象的所有名字都失效(超出生存期或            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-28 17:34:48
                            
                                130阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Lua中的table函数库 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.  table.concat(table, sep,  start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-23 16:27:30
                            
                                53阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、GC的原理及其算法设计不同的语言,对GC算法的设计不同,常见的GC算法是引用计数和Mark-Sweep算法, c#采用的是Mark-sweep && compact算法, Lua采用的是Mark-sweep算法,分开说一下:引用计数算法:在一个对象被引用的情况下,将其引用计数加1,反之则减1,如果计数值为0,则在GC的时候回收,这个算法有个问题就是循环引用。Mark-sweep            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-14 06:08:52
                            
                                32阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            lua序列化支持key类型为string, number支持value类型为string, number, table, boolean支持循环引用支持加密序列化支持loadstring反序列化使用示例  local t = { a = 1, b = 2}
local g = { c = 3, d = 4,  t}
t.rt = g
local ser_str = ser(g)
local uns            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-02 16:49:23
                            
                                81阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            大多数计算机命令由两部分组成:命令和参数。命令是要执行的程序,而参数可能是命令选项或用户输入。如果没有这种结构,用户将不得不编辑命令的代码,以改变命令所处理的数据。想象一下重写 printf 命令只是为了让你的计算机用 “hello world” 消息问候你。参数对于交互式计算至关重要,Lua 编程语言 提供了 {...} 表达式来封装在启动 Lua 脚本时            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-10 20:32:40
                            
                                177阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             在lua中是以函数指针的形式调用函数, 并且所有的函数指针都必须满足如下此种类型:typedef int (*lua_CFunction) (lua_State *L);   也就是说, 我们在C++中定义函数时必须以lua_State为参数, 以int为返回值才能被Lua所调用。但是不要忘记了, 我们的lua_State是支持栈的, 所以通过栈可以传递无穷个参数, 大小只受内存大小限            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-02 16:09:26
                            
                                25阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            C#里面把数据类型分为两大类,分别为值类型和引用类型。C#的值类型包括:结构体(数值类型、bool型、用户定义的结构体),枚举,可空类型。  C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串string。 string运算看起来像值类型其实是运算符重载的结果。关于值类型和引用类型的内存部署: 规律是:引用类型部署在托管堆上;值类型总是分配在它声明的地方:作为字段时,跟随其所