我正在尝试使用https://github.com/aptiva/TLC
我试着:
$ echo $LUA_PATH; echo "====="; find .; echo "====="; luajit-2.0.0-beta10 examples/window.lua我得到了:
?;?.lua;./?/init.lua
=====
.
./examples
./examples/talkingcomputer.lua
./examples/window.lua
./lst
./objc
./objc/BridgeSupport.lua
./objc/dispatch.lua
./objc/init.lua
./README.md
=====
luajit-2.0.0-beta10: error loading module 'objc' from file 'objc':
cannot read objc: Is a directory
stack traceback:
[C]: ?
[C]: in function 'require'
examples/window.lua:5: in main chunk
[C]: ?我的问题是:我做错了什么?如何加载objc模块?
谢谢!
发布于 2012-05-19 09:29:08
将./?/init.lua添加到LUA_PATH。
发布于 2015-09-17 19:30:23
进一步解释为什么接受的解决方案是有效的。
当需要一个模块时,Lua使用环境变量LUA_PATH来查找所需模块的位置。特殊符号'?'是匹配任何字符串的通配符,因此当require("module")和LUA_PATH="?;./?.lua"时,Lua将在当前目录中搜索‘'?'’和'module.lua‘。
在上面的问题中,LUA_PATH最初被定义为:
LUA_PATH="?;?.lua;"一旦发布了解决方案,用户就在LUA_PATH的末尾添加了./?/init.lua,但它不起作用。它不工作的原因是,当Lua试图解决require('objc')时,objc匹配LUA_PATH (?)中的第一个条目,而objc是一个目录,因此出现错误。
解决方案是在LUA_PATH的开头添加./?/init.lua:
LUA_PATH="./?/init.lua;?.lua;?;"关于LUA_PATH,重要的是要注意,与环境变量PATH不同,目录由分号(";")分隔。另一种指定搜索目录的方法是使用Lua变量package.path (在Lua文件中):
package.path = "./?/init.lua;"..package.path
local objc = require("objc")https://stackoverflow.com/questions/10659629
复制相似问题