Компиляция пользовательского SQLite для приложения для iPhone - PullRequest
10 голосов
/ 05 мая 2009

Я пытаюсь скомпилировать источник SQLite amalgamation в свое приложение для iPhone (чтобы дать мне доступ к полнотекстовой функции поиска, недоступной в скомпилированной для iPhone версии двоичного файла.

Когда я добавляю sqlite3.c и sqlite3.h в обычный шаблон приложения Carbon C, он прекрасно компилируется (с одним предупреждением о неиспользованной переменной), но когда я пытаюсь скомпилировать его в своем проекте iPhone, я получаю ошибок, связанных с отсутствующими объявлениями функций. Я могу решить эти проблемы, явно включив ctype.h, но это немного странно.

Тем не менее, даже после того, как он скомпилирован, он не может соединиться со следующей ошибкой:

"_sqlite3_version", referenced from:
_sqlite3_version$non_lazy_ptr in sqlite3.0
symbol(s) not found
collect2: ld returned 1 exit status

Я предполагаю, что это что-то в настройках сборки приложения iPhone, но я не могу понять это. Есть идеи?

Ответы [ 3 ]

6 голосов
/ 06 мая 2009

Попробуйте это с помощью следующих шагов:

  1. Меню xcode -> Проект -> Новая цель -> Статическая библиотека -> Имя цели: SQLite
  2. добавьте источник объединения SQLite в проект, теперь вы можете выбрать цель, выбрать SQLite
  3. xcode menu -> project -> edit active target -> tab General -> Direct Dependencies -> add SQLite
  4. вкладка Общие -> Связанные библиотеки -> добавить свой SQLite
1 голос
/ 08 мая 2009

Мне удалось сделать это, используя объединение, и выбросить его прямо в мой проект, не выполняя предложенного связующего катлана (я не говорю, что это плохая идея, просто это можно сделать в основном проекте).

Мне не нужно ничего редактировать (кроме добавления необходимого определения FTS для текстового поиска) и без ошибок компилировать. Проверьте настройки сборки и убедитесь, что «-sqlite3» не указан в других флагах связывания.

0 голосов
/ 05 мая 2009

Этот тип ошибки обычно означает отсутствие структуры.

  1. Щелкните правой или правой кнопкой мыши папку Frameworks вашего проекта.
  2. Выбрать Добавить> Существующий каркас ...
  3. Перейти к: Macintosh HD> Разработчик> Платформы> iPhoneOS.platform> Разработчик> SDK> iPhoneOS2.2sdk> usr> lib и выбрать libsqlite3.dylib
  4. Перестройте свой проект

Это должно позаботиться об этом, я думаю. Возможно, вам понадобится добавить аналогичную библиотеку для работы на iPhone Simulator.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...