2016-02-26 2 views
0

Я после этого урока здесь: http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_8_Application_using_Swift_and_FMDB - к сожалению, она написана для Xcode 6, а не 7.Связывание с SQLite в Xcode 7

я последовал за эти действия до «Создание и подготовка проекта SQLite Application»:

После создания проекта следующим шагом является настройка проекта на включение динамической библиотеки SQLite (libsqlite3.dylib) во время фазы компоновки процесса сборки. Несоблюдение этой библиотеки приведет к ошибкам сборки.

Чтобы добавить эту библиотеку, выберите целевую запись в навигаторе проектов Xcode (верхняя запись с названием продукта), чтобы отобразить панель «Общая информация». Перейдите на вкладку «Сборка фаз», чтобы отобразить информацию о сборке. В разделе «Связывание двоичных файлов с библиотеками» перечислены библиотеки и фреймворки, уже включенные в проект. Чтобы добавить другую библиотеку или структуру, нажмите кнопку «+», чтобы отобразить полный список. В этом списке найдите, а затем выберите libsqlite3.dylib и нажмите «Добавить».

... однако 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) 

я нашел это КИ, которая не очень помогают (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

Неопределенные символы «_OBJC_CLASS _ $ _ FMDatabase» указывают на то, что проблема связана с * not * со ссылкой на libsqlite, но с добавлением файлов FMDB. Вы дважды проверили, что во всех файлах .m включен флажок «Целевое членство»? –

ответ

0

Не ссылку на файл .tbd. Просто добавьте в настройку создания других флагов компоновщика.

+0

Есть ли специальная причина не ссылаться на файл .tbd? У меня не было проблем с этим до сих пор. И как вы можете видеть из вывода компоновщика, он имеет '-lsqlite3'. –

Смежные вопросы