Почему XCode 4 не может найти мои .h файлы во время сборки? - PullRequest
5 голосов
/ 08 июня 2011

У меня есть проект, который не будет собираться, потому что компилятор (?) Не может найти файлы .h. Я попытался использовать полный путь, относительный путь и установить пути поиска проекта (как заголовок, так и заголовок пользователя), но ничего не работает. Что я нахожу очень странным, так это то, что даже при полном пути выдается ошибка: Нет такого файла или каталога (файл действительно существует по указанному пути).

Кто-нибудь может дать несколько советов, в чем может быть проблема? Я, безусловно, был бы признателен.

операторы импорта:

#import <Foundation/Foundation.h>
#import <zxing/common/Counted.h>
#import <zxing/Result.h>
#import <zxing/BinaryBitmap.h>
#import <zxing/Reader.h>
#import <zxing/ResultPointCallback.h>

Заголовки расположены в:

/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src/zxing

Путь поиска заголовка:

$(inherited)
"$(SRCROOT)/zxing/common"

и

/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src

Полный путь включаемых файлов:

/Users/rolfmarsh/iPhoneCodeLibrary/BarcodeLibrary/zxing-1.6/cpp/core/src/zxing/Result.h

Ответы [ 4 ]

3 голосов
/ 01 июня 2012

У меня также было немало проблем с зависимостями ZXing. Вот несколько советов, которые, будем надеяться, будут полезны другим людям с похожими проблемами.

Эта строка выполняет импорт:

#import <zxing/common/Counted.h>

Чтобы компилятор нашел Counted.h, необходимо указать путь поиска заголовка.

Теперь, поскольку оператор import будет искать Counted.h относительно двух подпапок zxing/common, нам нужно присвоить ему родительскую папку zxing.

В этом случае родительская папка будет выглядеть примерно так:

/ .. my full path here ../cpp/core/src/

Итак, в каталоге src вы найдете zxing.

Как мы настраиваем это в Xcode? Лучше всего сделать это относительно. В противном случае проект не будет выполнен на компьютере другого пользователя.

Для этого мы указываем путь относительно каталога проекта. Следующим образом:

$(PROJECT_DIR)/../cpp/core/src

Это указывается в пути поиска заголовка в настройках сборки для цели ZXingWidget.

Важнейшей особенностью этого пути к заголовку является указание каталога относительного для поиска. В нашем случае мы указываем поиск относительно $(PROJECT_DIR). Эта переменная указывает каталог нашего подпроекта ZXingWidget.

Другие предостережения. Будьте внимательны, указав их в настройках сборки вашей цели. Если вы делаете это на уровне проекта, вам все равно нужно будет указать его на целевом уровне с помощью переменной $(inherited).

Кроме того, не забывайте, что транскрипт сборки может быть очень полезным. Посмотрите на пути заголовков, включенные в флаг -I.

В качестве общей техники отладки я хотел бы указать абсолютный путь в моих настройках. Это дает чистую сборку, и я знаю, что файлы могут быть включены, и где они определенно находятся. Сделав это, я затем использую $(PROJECT_DIR), чтобы указать относительный путь.

3 голосов
/ 18 января 2013

Я публикую это, чтобы упростить процесс для новичков, таких как я, которые интегрируют zxing qr reader в свои проекты, и чтобы завершить некоторые темы, связанные с интеграцией zxing.

1.Главное - быть абсолютно уверенным, что у вас последняя версия.

http://zxing.googlecode.com/svn/trunk/

[Теперь, 18 января, у вас больше не будет проблем с этой папкой zxing / common /.Проще всего это исправить: получить последний код!]

2.Зайдите в zxing -> iphone -> ZXingWidget.

Перетащите файл ZXingWidget.xcodeproj и поместите его в корень боковой панели «Группы и файлы» проекта Xcode.

[теперь у вас там должен быть ZXingWidget.xcodeproj, и он должен раскрыться и отобразить его содержимое]

3.Там же, навигатор проекта, выберите:

Файл вашего проекта -> Цели -> «имя вашего проекта» -> Фазы сборки -> Связать бинарный файл с библиотеками.

Выдолжен найти папку с именем «Рабочая область».Добавьте libZXingWidget.a изнутри.

4.Все еще в фазах сборки, разверните Целевые зависимости и добавьте ZXingWidget.

5.Выберите «Настройки сборки» и выполните поиск путей поиска по заголовкам.Вам нужно добавить 2 записи в пути поиска заголовка.Вам не нужно связывать значения с путями поиска по заголовкам пользователей.Вы достигаете этого, дважды щелкнув столбец справа.Появится небольшое всплывающее окно.Используйте кнопку +, чтобы добавить первую запись.Добавить:

.. / zxing / iphone / ZXingWidget / Classes

Теперь используйте кнопку +, чтобы добавить вторую запись.Добавить:

.. / zxing / cpp / core / src

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

[Обязательно правильно указывайте свою папку, если решите использовать другую структуру файла.]

6.Вернитесь к этапам сборки и добавьте следующие необходимые платформы ios:

AVFoundation

AudioToolbox

CoreVideo

CoreMedia

libiconv

AddressBook

AddressBookUI

7.

Создайте набор файлов (.h & .m) и измените его.м расширение до .mm

8.Протестируйте интеграцию, включив в созданный ранее файл следующее:

#import <ZXingWidgetController.h>
#import <QRCodeReader.h>

На этом этапе вы можете столкнуться с отсутствующими файлами, только если у вас не установлена ​​последняя версия.Надеюсь, это поможет.

1 голос
/ 09 июня 2011

Несколько вещей для проверки:
- права доступа к файлу
- вы можете собрать из командной строки с помощью xcodebuild?

0 голосов
/ 15 апреля 2013

Я просмотрел множество постов в блоге о том, как это исправить.Этот помог мне хорошо.

http://alwawee.com/wordpress/2011/12/01/zxingwidgetcontroller-h-not-found-zxing-installation-problem-solution/

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

1) Скачал zxing 2.1

2) Из загруженной мной копии скопировал: iphone, cpp, objc и readme и вставил в папку имена "zxing"

3) Я добавил новую папку "zxing" в свой проект (на моем mac), а не в приложение xcode.

4) Из созданной папки zxing я перетащил zxingwidget.xproje в свой проект xcode

5) Я выполнил все шаги, которые вы найдете во всех блогах

КЛЮЧ ДЛЯ РЕШЕНИЯ ЭТОГО

6) Я выполнил эти шаги для ошибок xcode https://stackoverflow.com/a/14703794/1881577

7) Я выполнил эти шаги для ошибок файла пути заголовка http://alwawee.com/wordpress/2011/12/01/zxingwidgetcontroller-h-not-found-zxing-installation-problem-solution/

ВАЖНОЕ ПРИМЕЧАНИЕ: я должен был выполнить шаг 7) дважды, мне пришлось выбрать цель проекта и назначить пути заголовков, и мне пришлось выбрать проект проекта и назначить пути заголовков.

8) Сборка проекта zxingwidget (из схемы выберите опции)

9) Сборка Запустите проект.

Надеюсь, это поможет и другим людям.

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