我在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
有趣的部分是:
getEnvImpl()
(C++ source)
内部,在.dylib
内。 inline
这个功能,ffi.load
似乎有效。如果我nm -g ./libSoapySDR.dylib
,我可以看到输出
000000000000b3b0 T __Z10getEnvImplPKc
所以,似乎那里,但ffi.load()
仍然失败,声称它不是。
有人可以解释发生了什么吗?
我非常希望不要内联代码,因为它不是我的代码库,而且我不确定我是否完全理解这种情况(我也不会在第一时间提交补丁) )。