体系结构的未定义符号 x86_64 / i386
Undefined symbols for architecture x86_64 / i386
我有一个与sqlite3通信的本地库,它在Android内工作正常,所以,我为iOS编译它,编译过程顺利完成,但在激动人心的时候,即在 Xcode 中构建 iOS 应用程序后,出现以下错误:
symbol(s) not found for architecture x86_64
Undefined symbols for architecture x86_64:
"_sqlite3_column_int64", referenced from:
rusqlite::statement::Statement::value_ref::h1ef4d7e4ee859386 in libgreetings.a(rusqlite-39d80e8cd3d6a115.rusqlite.99wt63ts-cgu.3.rcgu.o)
"_sqlite3_column_blob", referenced from:
rusqlite::statement::Statement::value_ref::h1ef4d7e4ee859386 in libgreetings.a(rusqlite-39d80e8cd3d6a115.rusqlite.99wt63ts-cgu.3.rcgu.o)
"_sqlite3_bind_int64", referenced from:
rusqlite::statement::Statement::bind_parameter::hc14d4185381afdbf in
...
...
...
即使我更改了 iOS Development target
,如图 and installed simulator iOS 10, and changed the Architectures
to $(ARCHS_STANDARD_32_BIT)
instead of $(ARCHS_STANDARD)
as shown here 我也遇到了同样的错误:
ld: symbol(s) not found for architecture i386
注意:该库是使用 rust 和 rusqlite crate 构建的,在添加 sqlite 部分之前,该库被顺利调用并执行得非常好。
在编译应用程序之前,您应该先 link 针对 sqlite3 库。
按照步骤:
- 转到目标的 "Build Phases" -> "Link Binary With Libraries" 部分。
- 点击添加“+”。
- 搜索 sqlite。
- select "libsqlite3.tbd", "tbd" 是 iOS.
中 dylib 文件的新扩展名
- 点击"Add"
现在您的应用已成功 linked 到 sqlite 库,错误应该已经消失了。
我有一个与sqlite3通信的本地库,它在Android内工作正常,所以,我为iOS编译它,编译过程顺利完成,但在激动人心的时候,即在 Xcode 中构建 iOS 应用程序后,出现以下错误:
symbol(s) not found for architecture x86_64
Undefined symbols for architecture x86_64: "_sqlite3_column_int64", referenced from: rusqlite::statement::Statement::value_ref::h1ef4d7e4ee859386 in libgreetings.a(rusqlite-39d80e8cd3d6a115.rusqlite.99wt63ts-cgu.3.rcgu.o) "_sqlite3_column_blob", referenced from: rusqlite::statement::Statement::value_ref::h1ef4d7e4ee859386 in libgreetings.a(rusqlite-39d80e8cd3d6a115.rusqlite.99wt63ts-cgu.3.rcgu.o) "_sqlite3_bind_int64", referenced from: rusqlite::statement::Statement::bind_parameter::hc14d4185381afdbf in ... ... ...
即使我更改了 iOS Development target
,如图 Architectures
to $(ARCHS_STANDARD_32_BIT)
instead of $(ARCHS_STANDARD)
as shown here 我也遇到了同样的错误:
ld: symbol(s) not found for architecture i386
注意:该库是使用 rust 和 rusqlite crate 构建的,在添加 sqlite 部分之前,该库被顺利调用并执行得非常好。
在编译应用程序之前,您应该先 link 针对 sqlite3 库。 按照步骤:
- 转到目标的 "Build Phases" -> "Link Binary With Libraries" 部分。
- 点击添加“+”。
- 搜索 sqlite。
- select "libsqlite3.tbd", "tbd" 是 iOS. 中 dylib 文件的新扩展名
- 点击"Add" 现在您的应用已成功 linked 到 sqlite 库,错误应该已经消失了。