1

我在尝试使用 ZeroBrane 在 macOS Sierra 10.12 上调试 Premake5 ( https://github.com/premake/premake-core ) 时遇到问题

我已经require('mobdebug').start()按照 ZeroBrane 文档中的描述添加了 package.cpath 和 package.path (在调用之前),但我总是遇到同样的错误:

Error: error loading module 'socket.core' from file '/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs53/socket/core.dylib':
    file is not a bundle

或者,如果我用 LUA_USE_DLOPEN 重新编译 Lua,我会得到一个不同的错误:

Error: error loading module 'socket.core' from file '/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib':
    dlopen(/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib, 2): Symbol not found: _luaL_prepbuffsize
  Referenced from: /Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib
  Expected in: flat namespace
 in /Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib

有什么可用的帮助吗?

谢谢

4

1 回答 1

2

您似乎在 Premake 中使用的 Lua 版本与编译 luasocket 库的版本不同。"file is not a bundle"是一条 Lua 5.1 消息,当文件加载器无法在 MacOS 上加载动态库并NSObjectFileImageInappropriateFile出现错误时显示。在这种情况下,您正在从 Lua 5.1 解释器 ( ) 加载为 Lua 5.3 编译的库/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs53/socket/core.dylib

在第二种情况下,您实际上是在加载 Lua 5.1 库 ( /Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib),但鉴于错误消息 ( Symbol not found: _luaL_prepbuffsize),您似乎是从 Lua 5.2 或 Lua 5.3 解释器加载它(正如luaL_prefbuffsize在 Lua 5.2 中介绍的那样)。

只要您使用的解释器与您尝试加载的模块的版本相匹配,您就应该能够毫无问题地加载模块。

于 2017-05-12T05:51:51.010 回答