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 インタープリターは、.dylib ファイルではなく、.so ファイルをロードしようとしています。.dylib は .so に相当する (わずかな変更を加えた) OSX であるという印象を受けました。したがって、Lua インタープリターは .dylib ファイルを探していると思います。

私のライブラリを OSX 上で .so にコンパイルしようとするべきですか?

4

2 に答える 2

5

インタプリタを変更する必要はありません(.dynlibがロード可能である場合(Luaでのプログラミング、第26章による))。モジュールを要求する前に、package.cpathを変更して、.soではなく.dynlibsを探すことができます。

于 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 に答える