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 客户端更改了我的一个文件的大写...我花了一个多小时才发现出了什么问题,因为我的模块突然无法在设备中找到)

于 2013-08-24T02:50:22.050 回答
-1

尝试这个

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

包中调用的 lua 文件的路径名应该是这样的:

目录.luafile.lua

而不是 dir/luafile.lua

希望有帮助

于 2013-01-10T04:01:07.520 回答