`

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基础库封装

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

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

    c++封装的lua库,包含演示和库代码。项目使用vs2015编译

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

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

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

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

    lua扩展库V1.6

    lua扩展库,包含bit、cpu、i2c、pack、pio、pmd、rtos、uart、adc、iconv、audiocore、apn等扩展库

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

    在源码包中,此宏定义在GCC中,打开lua-5.3.4/src/Makefile,可以看到:CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS)。 默认编译后,再回头编译vlc开源库,发现:lua/demux.c:55:13: 错误...

    Lua标准库及用法

    Lua标准库及用法,包含io,os,table,string,math,package等,总结性文档

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

    详细说明详见博文,此处空间有限,无法写全。博文链接,同名搜索即可。相互学习。 备注:官方源码的基础上做了实际用途的完善,只测试过linux和posix,其他版本未测试。

    Lua 5.3.0源码——包含VS2012项目文件

    在压缩包中的win_build中包含了VS2012构建用的文件和目录,可以将Lua核心库编译成动态库或静态库,可以生成Lua编译器和命令行解释器。但是,Lua5.3.0的编译器luac.c中调用了非Lua Dll导出的函数和数据结构,所以Lua...

    Lua 5.2.2源码——包含VS2012项目文件

    在压缩包中的win_build中包含了VS2012构建用的文件和目录,可以将Lua核心库编译成动态库或静态库,可以生成Lua编译器和命令行解释器。但是,Lua5.2.2的编译器luac.c中调用了非Lua Dll导出的函数和数据结构,所以Lua...

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

    详细说明详见博文,此处空间有限,无法写全。博文链接,同名搜索即可。相互学习。 备注:官方源码的基础上做了实际用途的完善,只测试过linux和posix,其他版本未测试。

    Lua 5.2.3源码——包含VS2012项目文件

    在压缩包中的win_build中包含了VS2012构建用的文件和目录,可以将Lua核心库编译成动态库或静态库,可以生成Lua编译器和命令行解释器。但是,Lua5.2.3的编译器luac.c中调用了非Lua Dll导出的函数和数据结构,所以Lua...

    Redis的Lua开发包redis-lua.zip

    redis-lua 是 Redis 的 Lua 语言的客户端开发包。 示例代码: require 'redis'local redis = Redis.connect('127.0.0.1', 6379) local response = redis:ping() -- trueredis:set('usr:nrk', 10) redis:set('usr:...

    进行C++与LUA交互编程的LUA库

    进行C++与LUA交互编程的LUA库,版本为5.1.5,32位,包含动态链接和静态链接两种方式

    Lua开发包

    5、收集了较多的脚本扩展包、帮助文档和演示程序,目前tcl的扩展包收集较多,其他脚本也正在收集完善,除了常用的tk、wx、pmw,还有图象、多媒体、界面库等很多各种各样的扩展包,以后我们打算通过在线更新的...

    编译好的lua alien模块,包括5.1版本和5.4版本

    编译好的lua alien模块,包括5.1版本和5.4版本 lua可以通过alien模块访问C动态库, 也可以访问系统api。 适用操作系统: linux 适用lua版本:lua5.1, lua5.4

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

    详细说明详见博文,此处空间有限,无法写全。博文链接,同名搜索即可。相互学习。 备注:官方源码的基础上做了实际用途的完善,只测试过linux和posix,其他版本未测试。

    Lua 5.2.2 windows平台可执行文件、头文件和库文件

    2,lua的动态库文件(lua52.dll) 3,lua嵌入c/c++需要的头文件 4,链接dll时用的lib文件(非静态库) 5,几个小例子 6,lua打包exe的工具(glue+srlua) 一点认识: lua是为嵌入其他高级语言而设计的。因而本身...

Global site tag (gtag.js) - Google Analytics