OSX加载dylib Lua模块。

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

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是OSX的等价物(稍有变动)。所以我希望Lua解释器应该寻找.dylib文件。

我应该尝试在OSX上将库编译为.so吗?(如果是,应该如何?)还是应该更改与Lua解释器相关的某些内容?

原文链接 https://stackoverflow.com/questions/5900816

点赞
stackoverflow用户513763
stackoverflow用户513763

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

2011-05-05 18:00:22
stackoverflow用户353820
stackoverflow用户353820
`package.cpath = package.cpath .. ";?.dylib"`
`print(package.cpath)`
`rtn = require ("libme")`
`print(rtn)`

在 OSX 上很好用。
2012-05-31 07:03:29