【问题标题】:Undefined symbols for architecture x86_64 / i386架构 x86_64 / i386 的未定义符号
【发布时间】:2018-12-15 19:24:08
【问题描述】:

我有一个与 sqlite3 通信的本机库,它在 Android 中运行良好,所以,我为 iOS 编译它,编译过程顺利完成,但在令人兴奋的时候,即曾经在 Xcode 中构建 iOS 应用程序,我收到以下错误:

未找到架构 x86_64 的符号

架构 x86_64 的未定义符号: “_sqlite3_column_int64”,引用自: libgreetings.a 中的 rusqlite::statement::Statement::value_ref::h1ef4d7e4ee859386 (rusqlite-39d80e8cd3d6a115.rusqlite.99wt63ts-cgu.3.rcgu.o) “_sqlite3_column_blob”,引用自: libgreetings.a 中的 rusqlite::statement::Statement::value_ref::h1ef4d7e4ee859386 (rusqlite-39d80e8cd3d6a115.rusqlite.99wt63ts-cgu.3.rcgu.o) “_sqlite3_bind_int64”,引用自: rusqlite::statement::Statement::bind_parameter::hc14d4185381afdbf 在 ... ... ...

即使我更改了iOS Development target,如图所示here 并安装了模拟器iOS 10,并将Architectures 更改为$(ARCHS_STANDARD_32_BIT) 而不是$(ARCHS_STANDARD),如图here 我得到了同样的错误:

ld:未找到体系结构 i386 的符号

注意:该库是使用 rust 和rusqlite crate 构建的,在添加 sqlite 部分之前,该库被顺利调用并执行得非常好。

【问题讨论】:

    标签: ios rust cross-compiling


    【解决方案1】:

    在编译应用程序之前,您应该先链接到 sqlite3 库。 请按照以下步骤操作:

    1. 转到目标的“构建阶段”->“将二进制文件与库链接”部分。
    2. 点击添加“+”。
    3. 搜索 sqlite。
    4. 选择“libsqlite3.tbd”,“tbd”是iOS中dylib文件的新扩展。
    5. 点击“添加” 现在您的应用已成功链接到 sqlite lib,错误应该已经消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 2014-08-07
      • 2012-07-20
      • 2011-10-30
      • 2023-03-11
      相关资源
      最近更新 更多