ios - 在 iOS 应用程序中添加多个静态 Rust 库

标签 ios rust static-linking

我有两个用 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/

相关文章:

ios - 在 Action 函数中操作 UIGestureRecognizer 的目标

ios - Objective-C iOS 应用程序在 CFStringAppend 期间崩溃,原因不明

rust - 如何检查一个路径是否是另一个路径的子目录?

rust - 有没有办法写入代数矩阵的整行/整列?

c++ - Qt .pro 文件中的 LIBS 与 PRE_TARGETDEPS

iphone - Xcode4 链接问题。文件是为存档而构建的,不是正在链接的架构(arm6)

c++ - 关于链接和包含不同版本库的问题

ios - 使用 CABasicAnimation 后防止 CAGradientLayer 位置返回到原始值

ios - UITextView 中的 UITextField?

rust - 什么是最有效的: a reference to an ArrayBase or an ArrayView?