macos - OSX 加载 dylib Lua 模块

标签 macos lua dylib shared-libraries

当尝试在 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 解释器相关的内容?

最佳答案

无需更改解释器(前提是 .dynlib 可加载(按照 Programming in Lua, chapter 26 ))。 在需要该模块之前,您可以更改 package.cpath 以查找 .dynlibs 而不是 .so。

关于macos - OSX 加载 dylib Lua 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900816/

相关文章:

c++ - 使用 require(..) 或 dofile(..) 在 Lua 中加载 .dll

macos - 监控进程的启动和关闭?

c++ - 从 Qt Creator 运行的应用程序使用的库与其单独运行时不同

c++ - QScrollArea 在 MacOS X 上的透明背景

C OS X 将目录内容读入字符串数组

ios - 如何防止调试器栏出现在 Xcode 7 中?

javascript - 如何从 Javascript 调用 Lua 函数

macos - Homebrew brew doctor 失败消息

c++ - 二进制字符串: unexpected end in precompiled chunk

xcode - 如何正确设置运行路径、搜索路径和安装名称?