Swift - Apple Mach-O 链接器错误 sqlite3 本地数据库

Swift - Apple Mach-O Linker Error sqlite3 local db

我在 this 教程中向我的项目添加了一个本地数据库。在我的解决方案中,我有两个项目,一个是主应用程序,另一个是 Today Extension 项目。当将 SQLlite 文件(由教程提供)和 libsqlite3.0.dylib 添加到主应用程序时,它可以完美地从数据库中 SELECT、INSERT、UPDATE 和 DELETE,但是当我尝试添加 SQLite文件到扩展我收到这些错误:

Undefined symbols for architecture x86_64:
  "_sqlite3_bind_blob", referenced from:
      __TFC12AppToday8SQLiteDBP33_9CF002B13E24CF8B0C3EFF52F9662D0D7preparefS0_FTSS6paramsGSqGSaPSs9AnyObject____VSs14COpaquePointer in SQLiteDB.o
  "_sqlite3_bind_double", referenced from:
      __TFC12AppToday8SQLiteDBP33_9CF002B13E24CF8B0C3EFF52F9662D0D7preparefS0_FTSS6paramsGSqGSaPSs9AnyObject____VSs14COpaquePointer in SQLiteDB.o
  "_sqlite3_bind_int", referenced from:
      __TFC12AppToday8SQLiteDBP33_9CF002B13E24CF8B0C3EFF52F9662D0D7preparefS0_FTSS6paramsGSqGSaPSs9AnyObject____VSs14COpaquePointer in SQLiteDB.o
  "_sqlite3_bind_null", referenced from:
      __TFC12AppToday8SQLiteDBP33_9CF002B13E24CF8B0C3EFF52F9662D0D7preparefS0_FTSS6paramsGSqGSaPSs9AnyObject____VSs14COpaquePointer in SQLiteDB.o
  "_sqlite3_bind_parameter_count", referenced from:
      __TFC12AppToday8SQLiteDBP33_9CF002B13E24CF8B0C3EFF52F9662D0D7preparefS0_FTSS6paramsGSqGSaPSs9AnyObject____VSs14COpaquePointer in SQLiteDB.o
  "_sqlite3_bind_text", referenced from:
      __TFC12AppToday8SQLiteDBP33_9CF002B13E24CF8B0C3EFF52F9662D0D7preparefS0_FTSS6paramsGSqGSaPSs9AnyObject____VSs14COpaquePointer in SQLiteDB.o

Etc..

下面的打印屏幕显示了项目的结构和我添加的文件。

我的想法是在扩展项目中添加 SQLiteDB.swift 和 String-Extras 以便能够对数据库进行 sqlite 调用。我还添加了必要的 briding-header 文件,但我收到了上述错误。

我在另一个帖子中看到我可以在设置 > 位置中删除 DerivedData 文件夹,但这并没有解决问题。

有人知道为什么会这样吗?奇怪的是它在主项目中有效但在扩展中无效...

我将 libsqlite3.0.dylib 添加到应用程序和扩展程序中。因此,如果您的应用程序和扩展程序都将使用您的数据库,则您需要将其作为目标。