架构x86_64 / i386的未定义符号

时间:2018-12-15 19:24:08

标签: ios rust cross-compiling

我有一个与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在      ...      ...      ...

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

  

ld:体系结构i386找不到符号

注意:该库是使用rust和here条板箱构建的,该库被平滑调用并在添加sqlite部分之前执行得很好。

1 个答案:

答案 0 :(得分:0)

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

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