Что делать, если я не могу найти заголовок GPUImage.h для рамки GPUImage?

Я создал образец приложения для выполнения искажения рельефа, используя инфраструктуру GPUImage. Я добавил эту инфраструктуру в свое приложение, но я вижу следующую ошибку

Лексический или препроцессорный вопрос "Файл GPUImage.h" не найден.

Я добавил флаг -ObjC в другие флаги компоновщика, но я все еще вижу эту ошибку. Как я могу решить эту проблему и получить мое приложение для компиляции?

Ответы

Ответ 1

Добавление рамки GPUImage в проект XCode может быть сложным. Поэтому я добавил подробные пошаговые инструкции w/images о том, как это сделать.

Метод статической компиляции (детальное решение, поэтому мы не испортим)

Это метод статической компиляции. В этом случае мы скомпилируем фреймворк с использованием файла. /build.sh. И просто добавьте его в наш проект XCode, а затем настройте XCode, чтобы правильно его использовать.

  • Загрузите GPUImage из Github и извлеките его (или просто клонируйте его).
  • Перейдите в папку GPUImage в терминале
  • Запустите ./build.sh

    Примечание. Это скомпилирует и создаст готовый к использованию двоичный файл для всех sdks на вашем mac.

  • build.sh создает папку с именем build и генерирует скомпилированные двоичные файлы и выгружает их в папки, такие как: Release-iPhone, Release-iPhoneOS, Release-iphonesimulator и т.д. enter image description here

  • Для iPhone используйте Release-iphone (это также работает для симулятора).
  • Скопировать (не перетаскивать) Release-iphone в корневой каталог проекта XCode, чтобы у нас была локальная копия фреймворка.
  • Теперь перетащите и перетащите iPhone Release-iphone в проект XCode. Обязательно установите флажок "Копировать в..".

    Примечание:

    • Эта папка Release-iphone содержит две подпапки: включить и lib
    • include содержит все заголовочные файлы .h.
    • папка lib содержит скомпилированный файл двоичной версии с именем libGPUImage.a
    • Теперь нам нужно просто настроить XCode для использования файлов .h и .a. **
  • Выберите проект в проводнике проектa > Название проекта под Цели > выберите "Сборка фаз" > "Развернуть Ссылка" Бинарные файлы с библиотеками "

  • Добавьте раздел libGPUImage.a, чтобы связать двоичные файлы с библиотеками. Вы можете щелкнуть правой кнопкой мыши по libGPUImage.a, затем Открыть в Finder и, наконец, перетащить его.

  • Пока мы находимся в нем, добавим также следующие зависимые от GPUImage рамки/библиотеки CoreMedia, CoreVideo, OpenGLES, AVFoundation, QuartzCore в Ссылка на двоичные файлы с библиотеками. enter image description here

  • Теперь давайте настроим заголовки .h.

  • Выберите проект в проводнике проектa > Название проекта под Цели > выберите "Параметры сборки" > и введите пути поиска, чтобы увидеть раздел пути поиска.

  • Откройте Контуры поиска заголовков, щелкнув поле значений.

  • Перетащите папку lib в это всплывающее окно. Примечание. Если он показывает абсолютный путь, измените его на вид $(SRCROOT)/path/to/lib/. (У вас должна быть структура, относящаяся к вашему проекту xcode, см. Шаг 6).

  • Повторите 11 и 12 для путей поиска библиотеки.

enter image description here Дополнительные советы: вы можете добавить .h файлы в Пути поиска библиотеки или Контуры поиска заголовков, вы можете сделать их Рекурсивными > . У меня есть основная корневая папка с именем Dependencies, где я храню все зависимости, такие как MySDK-framework, включая Release-iPhone. И у меня есть только один путь поиска в Dependencies (корневой папке) и сделал его рекурсивным.

Ответ 2

Вы выполнили все инструкции из Readme на странице ? Из инструкций по установке:

Вам также необходимо найти заголовки фреймворков, поэтому в вашем настройки проекта устанавливают пути поиска заголовков к относительным путь от вашего приложения к фреймворку/подкаталогу в Исходный каталог GPUImage. Сделайте этот путь поиска в заголовке рекурсивным.

Если вы видите указанную выше ошибку, это означает, что вы не указали пути поиска заголовков в правильном каталоге, где вы установили GPUImage относительно вашего проекта, и/или не нажимали на этот флажок слева сделайте эти пути поиска рекурсивными.

Я покажу несколько скриншотов о том, куда вам нужно перейти, чтобы установить это в этом ответе, что объясняет что-то подобное для платформы Core Plot. Те же принципы применяются, только вам нужно найти, где вы установили инфраструктуру GPUImage.

Ответ 3

Я добавляю относительный путь к "Пути поиска заголовков", но по-прежнему существует ошибка "не найдена".

Затем я добавляю путь к "Пути поиска заголовков пользователей", и он работает.

Может помочь вам.

enter image description here

Ответ 4

Наконец, я понял, что КЛЮЧЕВОЙ СЛОВО relative! Я поместил исходные файлы GPUImage в корневой каталог проекта: введите описание изображения здесь

Прежде чем решить проблему, я добавляю пути поиска заголовков:

$(PROJECT_DIR)/GPUImage/framework

$(PROJECT_DIR)/GPUImage/framework/iOS

и сделать их рекурсивными, но ошибка все еще существует, поэтому я изменил Paths на:

GPUImage/framework и сделать его рекурсивным, тогда он работает.

Надеюсь, что это поможет.