Обновлено до Xcode 4.1 и sqlite3.h вызывает ошибки компиляции там, где он не был до обновления

Недавно я открыл существующий проект за время до установки Xcode 4.1. Сначала было много ошибок, и я исправил проблему, выбрав LLVM 2.1 в качестве опции для компилятора. Все ошибки, кроме одного, были очищены, в sqlite3.h эта строка вызывает проблему:

SQLITE_API int sqlite3_enable_shared_cache (int) __OSX_AVAILABLE_BUT_DEPRECATED (__ MAC_10_0, __MAC_10_7, __IPHONE_2_0, __IPHONE_5_0);

Сообщение об ошибке:

Ожидаемое тело функции после объявления функции.

Любая помощь очень ценится,

Спасибо!

Ответ 1

У меня была та же проблема. Я изменил свой код, который сказал

#include "/usr/include/sqlite3.h"

к

#include <sqlite3.h>

и это зафиксировало это. Возможно, вы каким-то образом собираете неправильный файл заголовка.

Ответ 2

У меня была та же проблема. Открыл старый проект в последнем Xcode. sqllite3.h вызывает ошибки.

Я заметил, что если вы нажмете на sqlite3.h в своем коде, который вызвал ошибку, и откройте ее в xcode, щелкните правой кнопкой мыши и покажите в finder, что вы получите

/usr/include/sqlite3.h

пока вы идете к dylib

 Project > Targets > Project Name > Build Phases tab > Link Binary with Library section > libsqlite3.lib > right click and Show in Finder

вы получаете

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libsqlite3.lib

а заголовки для этого находятся в параллельной папке

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include/sqllite3.h

что важнее всего .h файлы были разными версиями

В iPhone SDK dir был

#define SQLITE_VERSION        "3.7.2"

В Mac/usr/include

#define SQLITE_VERSION        "3.7.5"

в/usr/include SQLITE_VERSION "3.7.5" определяется макрос, указывающий ошибку __OSX_AVAILABLE_BUT_DEPRECATED

SQLITE_API int sqlite3_enable_shared_cache(int) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_2_0, __IPHONE_5_0);

Но в одном в iPhone SDk 4.3/sqlite "3.7.2"

SQLITE_API int sqlite3_enable_shared_cache(int);

для того же определения его нет.

исправление, упомянутое выше, работает

 CHANGE EVERY #include "/usr/include/sqlite3.h"

к

#include <sqlite3.h>

Ответ 3

Такая же проблема. Я где-то читал, что обновление до Xcode 4.2 может исправить эту ошибку. Однако Xcode 4.2 в настоящее время не является утвержденным инструментом развертывания для App Store, поэтому это не вариант.