Lua loading .dylib:"未找到符号",尽管它存在

时间:2017-09-18 10:02:24

标签: c++ macos lua dynamic-linking luajit

我在MacOS上有libSoapySDR.dylib(10.12.6,clang-802.0.42)我想加载LuaJIT FFI

图书馆编译和链接很好,并生成.dylib没有错误。

然而,当我收到ffi.load('libSoapySDR.dylib')时:

dyld: lazy symbol binding failed: Symbol not found: __Z10getEnvImplPKc
  Referenced from: libSoapySDR.dylib
  Expected in: flat namespace

dyld: Symbol not found: __Z10getEnvImplPKc
  Referenced from: libSoapySDR.dylib
  Expected in: flat namespace

有趣的部分是:

  • 仅使用C ++功能getEnvImpl()C++ source) 内部,在.dylib内。
  • Lua不会尝试访问它(Lua source)。
  • 如果我inline这个功能,ffi.load似乎有效。
  • 如果我nm -g ./libSoapySDR.dylib,我可以看到输出

    000000000000b3b0 T __Z10getEnvImplPKc

所以,似乎那里,但ffi.load()仍然失败,声称它不是。

有人可以解释发生了什么吗?

我非常希望不要内联代码,因为它不是我的代码库,而且我不确定我是否完全理解这种情况(我也不会在第一时间提交补丁) )。

0 个答案:

没有答案