CoronaSDK中package.path的问题

时间:2013-01-09 18:31:34

标签: lua corona

我们希望将第三方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'确实有效。

任何线索?

2 个答案:

答案 0 :(得分:1)

你的文件名是

foo.lua或Foo.lua?

它适用于两种情况的模拟器,但在设备中,资本很重要。

我有这个噩梦(我想知道为什么我的SVN客户端改变了我的一个文件的资金......我花了一个多小时才发现出了什么问题,因为我的模块突然无法在设备中找到)< / p>

答案 1 :(得分:-1)

试试这个

package.path = package.path ..“;”   .. package.path:gsub(“?。lua”,“?。init.lua”)

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

dir.luafile.lua

而不是dir / luafile.lua

希望有所帮助