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用法二及仿面向对象式编程

为了感谢昨天忠实读者,今天赶快在贴出今天又研究通的一些关于require的用法,这个是本质的用法,同时给大家一个lua面向对象思想的例子,闲话不多说了,目录结构还和上一篇一样: 我们可以看到re...

重写require使lua文件模块化

lua文件模块化目标: 没有声明local的变量不会加入到全局变量,而是作为模块的变量 访问模块变量一律使用 "模块名.变量名"的形式 模块中使用显示的方式访问全局变量 ...

(转)牛叔的lua研究报告——dofile和require

转载地址:http://www.cppblog.com/nightsky0911/articles/161775.html 在lua中写个试验性质的小程序可能只要一个脚本文件就搞定了,不过一旦程序上...

lua require

require(modname) 加载给定的模块.函数首先检查表package.loaded来判定modname是否已经存在.如果存在,则require返回package.loaded[modnam...

Lua 初识之 loadfile、require、module - 十五

Lua 初识之 loadfile、require、module– Lua 中不同脚本交互调用,一般使用 dofile、loadfile、require。一、 loadfileTest.lua 脚本Te...

Lua 的require

在工作中碰到类似这样一种情况:local x = ...x变量不在函数中,这样的用法还是第一次见,所以自己敲了一个类似的例子,做个小标记。例子如下:--LuaTest.luaLuaTest = {} ...

Lua中require、dofile、loadfile的区别

lua文件是以chunk的方式存在的,其本质是一个函数

Lua中的loadfile、dofile、require详解

http://www.jb51.net/article/55125.htm 本来今天不应该讨论这几个函数的,不过,为了凑字数..不,为了方便以后的文章,还是要谈谈这几个基础函数的~ 1...

lua中的require机制

转载要附原文 lua中的require机制     为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来。 现在看看lua的require的处理流程...

Lua require 相对路径

Lua中的路径系统和我们熟知的路径系统是不一样的。 当我们随便的输入一个不存在文件的名,如下面的代码一样 require("lib.lua")就会出现以下的报错的信息no field package...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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