Ошибка при попытке использовать оболочку SQLite FMDatabase - PullRequest
9 голосов
/ 29 февраля 2012

У меня проблемы при попытке использовать базу данных FMD.

Я добавил эти файлы:

FMDatabaseQueue
FMDatabaseAdditions
FMDatabase
FMResultSet
FMDatabasePool

.. Я также добавил библиотеку libsqlite3.dylib и импортировалFMDatabase.h, но как только я раскомментирую эту строку:

FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"];

.. Я получаю эту ошибку:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_FMDatabase", referenced from:
      objc-class-ref in DBWrapper.o
ld: symbol(s) not found for architecture i386

Я также попытался изменить настройки, такие как цель развертывания, между 4.0 -5.0 и создание нового, чистого проекта и т. Д.

Я использую Xcode Version 4.3 (4E109).

Что я делаю не так?:)

// Стефан

Ответы [ 3 ]

17 голосов
/ 01 марта 2012

Это ошибка компоновщика - это означает, что все, что вы передали компилятору, было в порядке, но как только пришло время упаковать весь скомпилированный объектный код вместе в исполняемый файл, он не смог найти реализацию для класса, на который есть ссылка в коде.

Перетаскивание файлов .m в список исходного кода проекта в XCode должно автоматически добавить их в «фазу сборки», но если вы сделали это, и вы получаете эту ошибку, убедитесь, что они там есть: Нажмитеэлемент верхнего уровня в списке источников слева, чтобы получить параметры проекта, щелкните цель на следующей панели, щелкните заголовок столбца «Фазы сборки» на панели next , затем разверните «Компиляция».ИсточникиЕсли там нет файлов FM, нажмите кнопку + в нижней части списка и выберите их.

2 голосов
/ 07 мая 2015

Расширяя ответ Дэйхейдена ...

Если вы добавляете папку с заголовочными и исходными файлами в Xcode, файлы .m не добавляются в список источников компиляции. Меня обычно ловят здесь, потому что я хочу сохранить разумную структуру папок в папке моего проекта. Чтобы обойти это, я вручную копирую файлы в папку своего проекта, где я хочу их. Затем в XCode добавьте каждый отдельный заголовок и исходный файл в мой проект без копирования (используя File> Add Files To ...). Выберите все свободные файлы в Project Navigator, щелкните правой кнопкой мыши и создайте папку из списка.

Немного поздно, но я надеюсь, что это поможет кому-то еще.

1 голос
/ 29 февраля 2012

Вы импортировали заголовки FMDB в том месте, где вы их используете?

#import "FMDatabase.h"
...