`

lua的包库

阅读更多
包库为Lua提供简易的加载及创建模块的方法,由require、module方法及package表组成
1、module (name [, ···])
  功能:建立一个模块。
  当package.loaded[name]中存在时,当中的表作为module;
  当在全局表中存在name指定的表时,此表作为module;
  当以前两种情况都不存表name时,将新建一个表,并使其作为全局名name的值,并package.loaded[name],而且设t._NAME为name,t._M为module,t._PACKAGE为包的全名(模块名-组件a.b.c);最后把此module设t作为当前函数的新环境表和package.loaded[name]的新值(也就是说,旧的环境表将不能访问,除了加上package.seeall参数外),以被require使用
  module(name)后的可选参数为接收module名的函数,如package.seeall
2、require (modname)
  功能:加载指定的模块。
  此函数先检测package.loaded表中是否存在modname,存在则直接返回当中的值,没有则通过郰定义的加载器加载modname。
  查找加载器顺序:
  (1)检测package.preload表是否存在modname,有则加载
  (2)通过Lua Loader加载,通过查找存放于package.path的路径加载,有则加载
  (3)通过C Loader加载,通过查找存放于package.cpath的路径加载,有则加载
  (4)通过all-in-one Loader加载:
  通过查找modname.dll并查找当中的luaopen_
  其中XXXX为载块名-后的字符用_替换.后的字符:如:a.v1-b.c 当函数名为luaopen_b_c
  当require查找的不是一个Lua库或C库,它就会调用all-in-one loader,此加载器是用C路径作为载块的目录,
  当查找到合适的加载器时,require就会加载其中的模块,当加载器有返回值,将会存放于package.loaded[modname]表。最后返回package.loaded[modname]表
  当加载失败时,require将触发错误
3、package.cpath
  功能:用于require C loader的搜索路径
  可以通过修改LUA_CPATH变量(luaconf.h)修改此值
4、package.loaded
  功能:一个用于让require知道哪些模块已加载的记录表,如果package.loaded已经有require要的值,则直接返回此值
5、package.loadlib (libname, funcname)
  功能:通过动态连接C函数库方式加载Lua扩展库
  libname为库文件名,funcname为入口函数(此函数必须为纯C接口函数 c++则需用 extern "C" {} 进行限制)
6、package.path
  功能:用于require Lua loader的搜索路径
  可以通过修改LUA_PATH变量(luaconf.h)修改此值
7、package.preload
  功能:一个用于保存特殊模块加载器的表
8、package.seeall(module)
  功能:为module设置一个元表,此元表的__index字段的值为全局环境_G。所以module可以访问全局环境
  注:以此函数作为module()的一个选项(详细见module()
分享到:
评论

相关推荐

    易语言LUA支持库1.0#0版(第三方)

    易语言LUA_FNE.fne,LUA_FNE.fnr支持库中文名为易语言LUA支持库,。易语言LUA支持库为易语言第三方支持库。在易语言里使用LUA,您可以不必关心LUA栈的概念,但仍然要遵守一些规则。LUA脚本支持库 (1.0#0版)是对LUA...

    lua socket库

    这个库是由Diego Nehab开发的,它使得在Lua中编写网络应用变得更加简单和高效。Lua Socket库不仅包含了基本的套接字操作,还特别强调了对HTTP协议的完整实现,包括GET、POST等多种请求方法。 在Lua Socket库中,`...

    lua-5.3.tar.gz Mylua-5.3.tar.gz lua生成动态库 lua包管理 pkgconfig PKG_CONFIG_PATH

    总结来说,这个话题涵盖了 Lua 5.3 的核心特性、如何将其编译为动态库、使用 pkg-config 和 lua.pc 文件进行编译配置,以及 Lua 的包管理工具 LuaRocks。如果你打算在你的项目中使用 Lua 或者对其进行扩展,理解这些...

    c++ lua封装库包含演示和库代码

    C++封装Lua库的核心在于使用Lua提供的C API,这包括luaL_newstate、luaL_openlibs、luaL_loadbuffer或luaL_loadfile等函数来创建和管理Lua状态机,以及lua_pcall、lua_gettop、lua_settop等函数进行函数调用和栈操作...

    Lua支持库.rar

    这个"Lua支持库.rar"压缩包很可能是提供了一系列的 Lua 库源码,帮助开发者扩展 Lua 的功能,使其在易语言环境中更好地运行和交互。 首先,我们要了解 Lua 的基本特性。Lua 是一种动态类型的语言,语法简洁,易于...

    lua扩展库V1.51

    《lua扩展库V1.51》是针对lua编程语言的一个功能丰富的库集合,它为lua程序员提供了更多元化的操作工具,特别是在硬件控制和数据处理方面。以下将详细阐述其中的一些核心库及其功能: 1. **bit库**: - `bit`库是...

    luajava最新源码+jar包+动态链接库+lua编程环境

    史上最全luajava最新源码+jar包+动态链接库+lua编程环境 史上最全luajava最新源码+jar包+动态链接库+lua编程环境 史上最全luajava最新源码+jar包+动态链接库+lua编程环境

    LUA脚本|LUA脚本支持库

    LUA脚本支持库则是为了扩展LUA的功能,提供更多的API和工具,使得开发者能够更高效、更方便地编写LUA代码。本文将深入探讨LUA脚本支持库的相关知识点。 1. LUA基础 LUA的核心特点是简洁和高效,它拥有简单的语法...

    LUA扩展支持库

    这个压缩包“lua扩展支持库静态版luashellfne”可能包含了用于扩展Lua功能的静态库文件,方便开发者将其集成到自己的项目中,而无需关心动态链接库的依赖问题。 在Lua扩展中,我们可以讨论以下几个关键知识点: 1....

    lua扩展库V1.6

    - **pack(打包和解包库)**:允许对数据进行打包和解包操作,主要用来处理数据在存储或网络传输前的打包格式。 - **pio(并行输入输出库)**:提供操作并行输入输出接口的函数。 - **pmd(电源管理库)**:提供...

    Lua 静态库,编译器(含32位和64位)

    Lua 静态库,编译器(含32位和64位),编译好的静态库,以及编译好的Luac.exe,都有32位和64位版本,使用请包含include下面的lua.hpp,在加入lib库即可使用!版本为lua5.2.1!

    lua基础库封装

    自己编写的一些lua基础库,包含了常用的字符串处理;文件夹处理;文件处理等

    lua-5.1.tar.gz Mylua-5.1.tar.gz lua生成动态库 lua包管理 pkgconfig PKG_CONFIG_PATH

    “lua包管理”指的是在 Lua 生态系统中管理和组织第三方库的方法。虽然Lua本身没有内置的包管理系统,但社区发展了一些解决方案,如luarocks,它类似于Python的pip,用来安装、管理和更新Lua模块。 “pkgconfig”是...

    lua-5.2.4.tar.gz Mylua-5.2.4.tar.gz lua生成动态库 lua包管理 pkgconfig PKG_CONFIG_PATH

    总的来说,这个压缩包提供了 Lua 的官方源代码以及一个可能定制过的版本,你可以根据需要编译为解释器或动态库,并通过 pkg-config 和 LuaRocks 进行包管理和依赖处理。不过,需要注意的是,这个定制版只测试过在 ...

    Lua脚本支持库

    "Lua脚本支持库"指的是为Lua提供额外功能或便利的库,这些库可以扩展Lua的基本功能,使其能够处理更复杂的任务。下面将详细探讨Lua脚本支持库及其相关知识点。 1. **元编程能力**:Lua的核心特性之一是强大的元表和...

    lua aes 加解密库

    Lua AES 加解密库是一种在 Lua 语言环境中实现的高级加密标准(AES)加密和解密工具。AES 是一种广泛使用的对称加密算法,为数据提供了高强度的安全保护,适用于存储和传输敏感信息。在 Lua 中,这样的库允许开发者...

    支持lua的md5加密库

    编译后生成的`core.so`和`md5.lua`是动态链接库文件,`core.so`包含了实际的C/C++实现,而`md5.lua`则是Lua接口,使得Lua脚本可以直接调用MD5加密功能。另外,还提到了一个`des56.so`,这可能是DES(Data Encryption...

    linux环境中c++调用lua动态链接库以及编译方法

    1. 下载Lua源码包,如`lua-5.x.x.tar.gz`。 2. 解压并进入源码目录:`tar -zxvf lua-5.x.x.tar.gz && cd lua-5.x.x/` 3. 配置编译选项,确保为动态库模式:`make shared` 4. 完成编译后,动态库文件位于`src/`目录下...

Global site tag (gtag.js) - Google Analytics