OSX Загрузка dylib Lua Module - PullRequest
4 голосов
/ 05 мая 2011

При попытке загрузить модуль 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-эквивалент (с небольшими изменениями) .so. Так что я ожидаю, что интерпретатор Lua будет искать файл .dylib.

Должен ли я пытаться скомпилировать мою библиотеку в .so на OSX? (Если да, то как?) Или я должен изменить что-то связанное с интерпретатором lua?

Ответы [ 2 ]

5 голосов
/ 05 мая 2011

Нет необходимости менять интерпретатор (при условии, что .dynlib можно загрузить (согласно Программирование на Lua, глава 26 )).Вы можете изменить package.cpath для поиска .dynlibs вместо .so, прежде чем требовать модуль.

0 голосов
/ 31 мая 2012
package.cpath = package.cpath .. ";?.dylib"
print(package.cpath)
rtn = require ("libme")
print(rtn)

Отлично работает на osx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...