1

サードパーティの Lua モジュール (たとえば)fooを CoronaSDK アプリケーションに統合したいと考えています。

このモジュール モジュールのメイン コードは にありfoo/init.lua、 として必要ですrequire 'foo'

このモジュールをcorona/foo次の場所に配置しました。

corona/foo$ ls
  init.lua

私たちはcorona/main.lua持っています:

package.path = package.path .. ";"
  .. package.path:gsub("?.lua", "?/init.lua")

require 'foo'シミュレーターで動作します。ただし、デバイスでは機能しません。

Lua Runtime Error: lua_pcall failed with status: 2, error message is:
module 'foo' not found:resource (foo.lua) does not exist in
archive
  no field package.preload['foo']
  no file '/var/mobile/Applications/0B609A43-54E8-40E5-9D44-F3C93CC4031E/Appname.app/foo.lua'
  no file '/var/mobile/Applications/0B609A43-54E8-40E5-9D44-F3C93CC4031E/Appname.app/foo.lua'
  no file '/var/mobile/Applications/0B609A43-54E8-40E5-9D44-F3C93CC4031E/Appname.app/foo/init.lua'
  no file '/var/mobile/Applications/0B609A43-54E8-40E5-9D44-F3C93CC4031E/Appname.app/foo/init.lua'
  no file './foo.so'

奇妙なことに、require 'foo.init'うまくいきます。

手がかりはありますか?

4

2 に答える 2

1

あなたのファイル名は

foo.lua または Foo.lua?

どちらの場合もシミュレーターで動作しますが、デバイスでは資本が重要です。

私はこの悪夢に見舞われました (私の SVN クライアントがファイルの 1 つの大文字を変更したのはなぜだろうか... 私のモジュールがデバイスで突然見つからなかったので、何が問題なのかを見つけるのに 1 時間以上費やしました)

于 2013-08-24T02:50:22.050 に答える
-1

これを試して

package.path = package.path .. ";" .. package.path:gsub("?.lua", "?.init.lua")

パッケージで呼び出される lua ファイルのパス名は、次のようにする必要があります。

dir.luafile.lua

dir/luafile.lua ではなく

それが役立つことを願っています

于 2013-01-10T04:01:07.520 に答える