Lua require

转载 2013年12月05日 14:03:32

今天某XXX.lua脚本中 local socket = require"socket" 死活通不过。这里是c++调用的lua脚本。


如果直接脚本解释器中运行  lua XXX.lua是能通过的。

 

lua调用库,要C++中显式加载模块如luaopen_socket(L);估计是没加载。


查了下:

 

 

Lua的require: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>
      其中XXXX为载块名-后的字符用_替换.后的字符:如:a.v1-b.c 当函数名为luaopen_b_c
    当require查找的不是一个Lua库或C库,它就会调用all-in-one loader,此加载器是用C路径作为载块的目录,
    当查找到合适的加载器时,require就会加载其中的模块,当加载器有返回值,将会存放于package.loaded[modname]表。最后返回package.loaded[modname]表
    当加载失败时,require将触发错误

package.cpath
功能:用于require C loader的搜索路径,为模式串
可以通过修改LUA_CPATH变量(luaconf.h)修改此值

package.path
功能:用于require Lua loader的搜索路径
同样可以通过修改LUA_PATH变量(luaconf.h)修改此值

 

 

 

 

于是我把直接命令行下打印出的package.path    package.cpath记下。

然后手动添加(不是替换)到 c++调用的lua的package.path    package.cpath中。

 

问题解决。

lua require 搜索路径

lua引用第三方库时,设置搜索路径   package.path = '/usr/local/share/lua/5.1/?.lua;/home/resty/?/init.lua;'    --搜索...

lua5.1.4中实现自定义require的loader函数

刚开始以为只是简单的把自己的C函数,替换到package.loaders[2](索引2是lua的文件加载器)里面就OK了,实际上也是这样的,但是这样的代价就是文件搜索啊,一堆一堆的判断啊都要自己做,因...

【Cocos-Quick】quick源文件中关于lua的import和require的区别

转载自http://blog.csdn.net/u012723995/article/details/40455357载入一个模块import() 与 require() 功能相同,但具有一定程度的自...

Lua中require,dofile,loadfile,dostring,loadstring,loadlib,load之间的区别

Lua中require,dofile,loadfile,dostring,loadstring,loadlib,load之间的区别 重点掌握 require,dofile,loadfile,...
  • vicdd
  • vicdd
  • 2016年09月28日 11:44
  • 280

lua的require

Lua加载模块

lua5.1.4中实现自定义require的loader函数

刚开始以为只是简单的把自己的C函数,替换到package.loaders[2](索引2是lua的文件加载器)里面就OK了,实际上也是这样的,但是这样的代价就是文件搜索啊,一堆一堆的判断啊都要自己做,因...

关于lua的require使用

关于lua的require的使用

cocos-Lua中的class与require机制(小积累)

local layer = require("PaiGow.src.GamePlayerListLayer") local GameTableUI = class("GameTableUI", re...

lua中的require机制

为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来。 现在看看lua的require的处理流程。1、require机制相关的数据和函数package.pa...

lua中的require机制

转载要附原文 lua中的require机制     为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来。 现在看看lua的require的处理流程...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lua require
举报原因:
原因补充:

(最多只允许输入30个字)