我在这里遵循本教程:http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_8_Application_using_Swift_and_FMDB - 不幸的是,它是为Xcode 6编写的,而不是7。
我按照这些步骤进行了#34;创建和准备SQLite应用程序项目":
创建项目后,下一步是将项目配置为在构建过程的链接阶段包含SQLite动态库(libsqlite3.dylib)。如果不包含此库将导致生成错误。
要添加此库,请在Xcode项目导航器(带有产品名称的顶部条目)中选择目标条目,以显示“常规信息”面板。选择“构建阶段”选项卡以显示构建信息。 Link Binary with Libraries部分列出了项目中已包含的库和框架。要添加其他库或框架,请单击“+”按钮以显示完整列表。从此列表中搜索,然后选择libsqlite3.dylib并单击Add。
...但libsqlite3.dylib
不在列表中,因此我选择libsqlite3.tbd
代替(libsqlite3.0.tbd
也列出了,但我没有选择它。)
然而,当我构建项目时,我得到了这个输出:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_FMDatabase", referenced from:
type metadata accessor for __ObjC.FMDatabase in Database.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我发现这个QA并没有多大帮助(Undefined symbols for architecture i386 using libsqlite3.dylib with FMDB Xcode 7 ios9)因为提供的解决方案要么添加libsqlite3.dylib
(我不存在,我在我的文件系统中搜索),或添加我已经完成的libsqlite3.tbd
的引用。
这是我的链接器命令(为便于阅读而格式化):
Ld build/Debug-iphonesimulator/MyApp.app/MyApp normal i386
cd "/Users/me/src-me/MyApp"
export IPHONEOS_DEPLOYMENT_TARGET=9.2
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-arch i386
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk
-L/Users/(me)/src-me/MyApp/build/Debug-iphonesimulator
-F/Users/(me)/src-me/MyApp/build/Debug-iphonesimulator
-filelist /Users/(me)/src-me/MyApp/build/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp.LinkFileList
-Xlinker
-rpath
-Xlinker @executable_path/Frameworks
-mios-simulator-version-min=9.2
-Xlinker
-objc_abi_version
-Xlinker 2 -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator
-Xlinker
-add_ast_path
-Xlinker /Users/(me)/src-me/MyApp/build/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp.swiftmodule
-lsqlite3
-framework ExternalAccessory
-Xlinker
-dependency_info
-Xlinker /Users/(me)/src-me/MyApp/build/MyApp.build/Debug-iphonesimulator/MyApp.build/Objects-normal/i386/MyApp_dependency_info.dat
-o /Users/(me)/src-me/MyApp/build/Debug-iphonesimulator/MyApp.app/MyApp
答案 0 :(得分:0)
不要链接到 .tbd 文件。只需将-lsqlite3
添加到Other Linker Flags构建设置即可。