1

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モジュールをロードするにはどうすればよいですか?

ありがとう!

4

2 に答える 2

2

に追加./?/init.luaLUA_PATHます。

于 2012-05-19T01:29:07.707 に答える
1

受け入れられたソリューションが機能する理由に関するいくつかの詳細な説明。

モジュールが必要な場合、Luaは環境変数LUA_PATHを使用して、必要なモジュールの場所を見つけます。特別な記号'?'は任意の文字列に一致するワイルドカードです。したがって、require("module")との場合LUA_PATH="?;./?.lua"、Luaは現在のディレクトリで「 module」と「module.lua 」を検索します。

上記の質問では、LUA_PATHは元々次のように定義されていました。

LUA_PATH="?;?.lua;"

ソリューションが投稿されると、ユーザー./?/init.luaはLUA_PATHの最後に追加しましたが、機能しませんでした。それが機能しなかった理由は、Luaがrequire('objc') objcを解決しようとすると、LUA_PATH(?)の最初のエントリと一致し、objcがディレクトリであるため、エラーが発生したためです。

./?/init.lua解決策は、LUA_PATHの先頭に次を追加することです。

LUA_PATH="./?/init.lua;?.lua;?;"

LUA_PATHに関しては、環境変数PATHとは異なり、ディレクトリがセミコロン( ";")で区切られていることに注意することが重要です。検索するディレクトリを指定する別の方法は、Lua変数package.path(Luaファイル内)を使用することです。

package.path = "./?/init.lua;"..package.path
local objc = require("objc")
于 2015-09-17T11:30:22.880 に答える