Включение заголовка C ++ в проект Objective C приводит к ошибкам «Ожидается * перед *» - PullRequest
0 голосов
/ 12 июля 2011

Я новичок в Objective C и (к сожалению) также в проекте, над которым я работаю. Мне дали небольшой пример проекта, который ссылается на работу моих предшественников (на C ++) и использует его для приложения для iPhone (Objective C). Вместо того, чтобы расширять образец (это было быстро и грязно, и я не хотел возиться с этим), я создал новый проект с нуля для своих вещей. Чтобы заставить его работать, мне нужно установить те же ссылки на предыдущие библиотеки, что и на другие, но хотя в своих настройках я не могу найти никаких отличий от существующего проекта, это не сработает.

С помощью коллег и Google я достиг этого:

1) Проект включает в себя два библиотечных файла, libyid.a и libvrpn.a, через диалог Xcode «Добавить файлы». Он автоматически добавлял пути библиотек к путям поиска библиотек в настройках сборки, а файлы отображались в структуре папок проектов в XCode. Насколько я могу судить, этот бит не вызывает проблем. Изменить: если я удаляю эти файлы из проекта, я получаю те же ошибки. Теперь я думаю, что XCode может разрешать заголовки, но не может найти реализацию и что библиотеки, возможно, были там, но не были должным образом настроены?

2) Один из моих пользовательских классов использует

#import "DisplayYid.h"

Я добавил путь к местоположению файла в «Пути поиска по заголовку» в настройках сборки, и, похоже, он найден в порядке. (В какой-то момент я также добавил файл с помощью диалога «Добавить файлы», но он ничего не изменил, поэтому я оставил его таким образом)

Теперь проблема: в

@interface YidController : NSObject { 
    DisplayYid *myYid;
    // (etc. etc.)
}

идентификатор «DisplayYid», кажется, остается неизвестным (ошибка: ожидаемый список спецификаторов-спецификаторов перед DisplayYid). Кроме того, все определения классов в заголовках, которые сам DisplayYid включает в себя yield

error: expected '=', ',', ';', 'asm' or '__attribute__' before '__declspec'

Мои знания здесь, к сожалению, очень ограничены, но мне кажется, что XCode может найти рассматриваемые заголовки, но как-то ожидать содержимого в другом формате / языке? Когда я включил DisplayYid.h как файл в иерархию проекта, я попытался установить его тип файла в инспекторе файлов на «Заголовок C ++» (как это было предложено некоторыми хитами, которые я нашел в Google для моей проблемы), но это не изменить вещь. Я чувствую, что упускаю какую-то крошечную, но важную деталь, но не достаточно уверена в этом, чтобы проверить дальше Надеюсь, кто-нибудь увидит мою недостающую ссылку? И извините, если это слишком долго, я просто попытался включить подробные шаги на случай, если это проблема.

Заранее спасибо за ваше время;)

РЕДАКТИРОВАТЬ: Этот вопрос , кажется, та же проблема, особенно тот факт, что он получает ошибку несколько раз из просто скопированных файлов. Но ни одно из предложенных решений, похоже, не работает для меня.

1 Ответ

0 голосов
/ 10 апреля 2012

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

-DIOS (определение флага iOS) -x target-c ++

С этого момента все прошло хорошо.Поскольку это был скорее вопрос и решение, связанные с проектом, следует ли мне удалить все это вместе?

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