4

尝试在 OSX 上加载 Lua 模块时,我收到以下错误。

lua: level1.lua:1: module 'libexpand_luaLib' not found:
    no field package.preload['libexpand_luaLib']
    no file './libexpand_luaLib.lua'
    no file '/opt/local/share/lua/5.1/libexpand_luaLib.lua'
    no file '/opt/local/share/lua/5.1/libexpand_luaLib/init.lua'
    no file '/opt/local/lib/lua/5.1/libexpand_luaLib.lua'
    no file '/opt/local/lib/lua/5.1/libexpand_luaLib/init.lua'
    no file './libexpand_luaLib.so'
    no file '/opt/local/lib/lua/5.1/libexpand_luaLib.so'
    no file '/opt/local/lib/lua/5.1/loadall.so'
stack traceback:
    [C]: in function 'require'
    level1.lua:1: in main chunk
    [C]: ?

lua 解释器正在尝试加载 .so 文件而不是 .dylib 文件。我的印象是 .dylib 是 .so 的 OSX 等价物(略有变化)。所以我希望 Lua 解释器正在寻找一个 .dylib 文件。

我应该尝试在 OSX 上将我的库编译成 .so 吗?(如果是这样怎么办?)还是应该更改与 lua 解释器相关的内容?

4

2 回答 2

5

无需更改解释器(前提是 .dynlib 是可加载的(根据Lua 编程,第 26 章))。在需要模块之前,您可以更改 package.cpath 以查找 .dynlibs 而不是 .so 的。

于 2011-05-05T18:00:22.827 回答
0
package.cpath = package.cpath .. ";?.dylib"
print(package.cpath)
rtn = require ("libme")
print(rtn)

在 osx 上工作得很好。

于 2012-05-31T07:03:29.573 回答