如何使用ZeroBrane调试Premake5

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

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

运行错误:从文件'/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs53/socket/core.dylib'加载模块'socket.core'时发生错误:
    文件不是一个bundle

或者,如果我使用LUA_USE_DLOPEN重新编译Lua,则会出现不同的错误:

运行错误:从文件'/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib'加载模块'socket.core'时发生错误:
    dlopen(/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib, 2):找不到符号:_luaL_prepbuffsize
  从/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib引用
  在/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib中期望处在:扁平命名空间
 在
/Applications/ZeroBraneStudio.app/Contents/ZeroBraneStudio/bin/clibs/socket/core.dylib中

有人可以提供帮助吗?

谢谢

点赞
用户1442917
用户1442917

你似乎在Premake中使用了与luasocket库编译版本不同的Lua版本。当MacOS上的NSObjectFileImageInappropriateFile错误导致文件加载器无法加载动态库时,"file is not a bundle"是Lua 5.1显示的一条消息。在这种情况下,你正在从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-12 05:51:51