我有两个用 Rust 编写的库(具有 C 兼容接口(interface)),我正试图将它们集成到 iOS 应用程序中。
在同一项目中集成两个 .a 文件时,出现错误,因为 Rust 标准库中的符号现在多次出现:
duplicate symbol _rust_eh_personality in:
/Users/x/Development/ios-client/Y/Rust/lib1_ffi.a(lib1_ffi.0.o)
/Users/x/Development/ios-client/Y/Rust/lib2_ffi.a(lib2_ffi.0.o)
...
如何解决?可以将 Rust 符号提取到单独的库中吗?或者符号可以命名空间吗?
最佳答案
在发布这篇文章时,普遍的理论是这个问题是在启用链接时优化 (LTO) 时发生的,并且是由 rustc 生成的静态库中的错误引起的 (link) .
作为一项临时措施,建议在解决此问题之前不要启用 LTO。
关于ios - 在 iOS 应用程序中添加多个静态 Rust 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46568656/