【发布时间】:2012-12-24 00:29:06
【问题描述】:
我们希望将第三方 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' 确实有效。
有什么线索吗?
【问题讨论】:
-
这是非常奇怪的行为。如果
foo.init有效,那么理论上foo应该也有效,如果?/init.lua在您的包路径中,它似乎是,由错误输出指示。foo模块设置如何;它是返回一个表还是使用模块()? Corona 是否有可能使用自定义package.loaders?您是否尝试过创建一个重现此问题的最小测试用例? -
Corona 确实有可能使用自定义
package.loaders。 -
foo 模块如何设置;它是返回一个表还是使用模块()?也不是,该模块只是执行一些代码 Corona 是否有可能使用自定义 package.loaders? docs.coronalabs.com/api/library/package/loaders.html您是否尝试过创建一个重现此问题的最小测试用例?是的