WedX - журнал о программировании и компьютерных науках

Xcode не удалось создать предварительно скомпилированный заголовок?

заранее спасибо за помощь, которую вы мне окажете.

Я искал это полдня в Интернете вчера и два часа сейчас, и я ничего не нашел (кроме тех двух ссылок, которые не помогли FMDatabase.h не найден при использовании библиотеки route-me & Не удалось создать предварительно скомпилированный-заголовок для мостового заголовка)

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

не удалось создать предварительно скомпилированный заголовок '/Users/me/Library/Developer/Xcode/DerivedData/Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-subscribe.com/Geader/Alavoc-Bridging-Noindex / меня / Загрузки / Alavoc-ios-master / Alavoc / bridge / Alavoc-Bridging-Header.h '

/Users/me/Downloads/Alavoc-ios-master/Alavoc/externalLib/customClass/customClassViewController.h:13:9: ошибка: файл 'FMDB / FMDB.h' не найден

Также есть одна фатальная ошибка, написанная таким образом (даже если у меня подсчитано только две ошибки, эта появляется в журнале над двумя другими ранее описанными)

фатальная ошибка: файл модуля '/Users/me/Library/Developer/Xcode/DerivedData/ModuleCache/30E4RG2TSVLXF/Foundation-3DFYNEBRQSXST.pcm' устарел и должен быть перестроен: примечание о несоответствии подписи: импортировано '/ Users / me /Library/Developer/Xcode/DerivedData/Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75 UsersH5N30VLOS / Bridge / master / bridge / i75Navoc-Bridging-Header-swift_1I75UsH5N30VS-class / i75NsH5N30VPS-class / i75Navoc-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-M-N40-V-CL-S-Cl / / Alavoc-Bridging-Header.h: 13: 9: примечание: в файле, включенном из /Users/me/Downloads/Alavoc-ios-master/Alavoc/bridge/Alavoc-Bridging-Header.h:13: #import "customClassViewController. час"

customClassViewController.h строка 13:

#import <FMDB/FMDB.h>

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

Заранее спасибо за вашу помощь, ребята, я очень ценю это!

Редактировать для battlmonster (новые ошибки):

Вот две ошибки (файл не найден (в Alavoc-Bridging-Header.h FMDB.h не найден)) и не удалось создать предварительно скомпилированный заголовок:

фатальная ошибка: файл '/Users/me/Downloads/Alavoc-ios-master/Alavoc/bridge/Alavoc-Bridging-Header.h' был изменен, так как предварительно скомпилированный заголовок '/ Users / me / Library / Developer / Xcode / DerivedData /Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch 'был построен примечание: пожалуйста, восстановить прекомпилированный заголовок' / Users / мне / Library / Developer / Xcode / DerivedData / Alavoc-arfzuirebtfstncdztyvgvtpcbgw /Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_1I75NH5N40QPS-clang_30E4RG2TSVLXF.pch '/Users/me/Downloads/Alavoc-ios-master/Alavoc/Bridging/Alavoc/bridging/Alavoc/bridge.html: ошибка: файл 'FMDB / FMDB.h' не найден

Импортировать

    ^ 1 error generated. <unknown>:0: error: failed to emit precompiled header

'/Users/me/Library/Developer/Xcode/DerivedData/Alavoc-arfzuirebtfstncdztyvgvtpcbgw/Build/Intermediates.noindex/PrecompiledHeaders/Alavoc-Bridging-Header-swift_40E75NH5_Header-UserSwift_1I75NH5_Header-UserSwift_40VRD_CB_Header_Header_swift_1I75NH5_Header_UserSwift_40_VRD_C_BR_Header -ios-master / Alavoc / мост / Alavoc-Bridging-Header.h '


  • Было бы полезно, если бы вы показывали код customClassViewController.h около строки 13, потому что именно там вы видите ошибку. 08.04.2018
  • Большое спасибо за ответ, дружище! customClasshViewController.h строка 13 выглядит следующим образом: #import ‹FMDB / FMDB.h› 10.04.2018

Ответы:


1

Эта ошибка связана с искаженным заголовком моста. Заголовок моста - это специальный файл заголовка, в котором перечислены все файлы заголовков Objective-C с классами, которые должны быть доступны из кода Swift. Все определения заголовков моста предварительно скомпилированы, чтобы их можно было использовать из Swift. В вашем случае заголовок моста - «Alavoc / bridge / Alavoc-Bridging-Header.h», и он включает заголовок для customClassViewController.h (из Alavoc / externalLib / customClass), который указывает, что ваш коллега-разработчик хочет, чтобы customClassViewController был доступен. в коде Swift.

Заголовок мостового соединения сбивает с толку то, что он не рекурсивно включает все, т.е. он просто смотрит на первый уровень определений, и если вы импортируете что-то в свой импорт, что вы хотите в Swift, вы должны добавить его в мостовое соединение. заголовок явно, иначе вы, вероятно, получите предупреждение (или иногда ошибку). Допустим, у вас есть #import "A.h" в заголовке моста, и у вас есть #import "B.h" внутри «A.h», тогда вам, вероятно, также придется добавить «B.h» в заголовок моста.

Теперь в вашем примере A = customClassViewController и B = FMDB, и обычно вам нужно добавить FMDB в заголовок моста, но дело в том, что вы, скорее всего, не хотите экспортировать FMDB в Swift через заголовок моста, потому что это не предназначен для этого (это для вашего собственного кода objc, а не для сторонних библиотек).

Решением было бы удалить строку 13 из вашего "customClassViewController.h". Это, вероятно, исправит компиляцию заголовка моста, но, вероятно, сломает customClassViewController, поэтому вам нужно включить FMDB в customClassViewController.m и, скорее всего, адаптировать customClassViewController.h, чтобы не иметь ничего, связанного с FMDB (или заранее объявить те использования с @class X;).

Если вы переместите #import <FMDB/FMDB.h> в файлы своей реализации (.m) и все равно получите error: 'FMDB/FMDB.h' file not found, вероятно, путь FMDB не указан в ваших путях поиска заголовков.

Чтобы решить последнюю проблему, просто укажите правильный путь в «Пути поиска заголовков» в настройках сборки Xcode. Допустим, FMDB находится в / Users / me / Downloads / Alavoc-ios-master / Alavoc / ASDASD / FMDB (и у вас есть /Users/me/Downloads/Alavoc-ios-master/Alavoc/ASDASD/FMDB/FMDB.h внутри), затем вам нужно открыть настройки проекта Xcode - выбрать цель слева - выбрать «Настройки сборки» вверху - найти настройку «Пути поиска заголовков» и добавить / Users / me / Downloads / Alavoc-ios-master / Путь Alavoc / ASDASD

10.04.2018
  • Большое спасибо за ваш ответ, который все прояснил. Поэтому я прокомментировал строку 13 в customClassViewController.h и добавил импорт ‹FMDB / FMDB.h› в customClassViewController.m. Но по-прежнему возникает ошибка, что файл FMDB / FMDB.h все еще не найден, я не понимаю? Возможно, именно поэтому не удается создать предварительно скомпилированный заголовок? (По-прежнему существует ошибка, говорящая о том, что не удалось создать предварительно скомпилированный заголовок) 11.04.2018
  • Если это тот же файл и строка, возможно, вам следует очистить и пересобрать проект. Если что-то новенькое - найди. 11.04.2018
  • Я очистил проект и снова собрал, но файл FMDB / FMDB.h все еще не найден и не сработал (я думаю, это связано с тем, что FMDB не может быть найден). Любые идеи? :( 11.04.2018
  • Опубликуйте новое сообщение об ошибке. Если вы удалили строку импорта, она не может быть такой же (если вам не нужно удалять ее где-нибудь еще). 11.04.2018
  • Хорошо, я отредактировал свое сообщение, так как не могу опубликовать здесь ошибку (слишком долго) 11.04.2018
  • Это та же ошибка, чувак. Разберитесь сами. Там написано: Alavoc-Bridging-Header.h: 29: 9. Это означает, что откройте строку 29, столбец 9 Alavoc-Bridging-Header.h. 11.04.2018
  • Потому что FMDB импортирован в заголовок моста, братан ... Вы не сказали мне удалить if оттуда? :( 12.04.2018
  • Я прокомментировал FMDB в заголовке моста, и теперь в LevelViewController.swift появилась новая ошибка: нет такого модуля CNNPopUpController, я не могу комментировать снова, поскольку, если я прокомментирую это, все должно быть прокомментировано один за другим, всегда будет новая ошибка, связанная с предыдущий прокомментировал товарищ. 12.04.2018
  • Итак, вы исправили 2 ошибки и теперь получаете новую, не имеющую отношения к FMDB или мостовым заголовкам. Может быть, где-нибудь есть чат, где люди могут вам помочь. 13.04.2018
  • В customClassViewController.m все еще файл FMDB / FMDB.h не найден, я его не понимаю. Иногда появляется ошибка (когда я нахожусь в представлении customClassViewController.m, а иногда она не появляется, когда я нахожусь в другом быстром файле при создании проекта). Теперь CNNPopupController и FMDB не найдены. Куда бы я ни поставил FMDB, его не найти. Но этот файл явно находится здесь, в проекте ... Он появляется, если я нахожусь в файле, который его импортирует, когда я запускаю сборку. Иначе не появится. Действительно странно ... 13.04.2018
  • О, но тогда это намного проще. Просто укажите правильный путь в ваших путях поиска заголовков в настройках сборки Xcode. Допустим, FMDB находится в / Users / me / Downloads / Alavoc-ios-master / Alavoc / ASDASD / FMDB (и у вас есть /Users/me/Downloads/Alavoc-ios-master/Alavoc/ASDASD/FMDB/FMDB.h внутри), затем вам нужно открыть настройки проекта Xcode - выбрать цель слева - выбрать параметры сборки вверху - найти параметр Пути поиска заголовков и добавить / Users / me / Downloads / Alavoc-ios-master / Alavoc / ASDASD path там. 13.04.2018
  • Хорошо, я раскомментировал строки #import FMDB, которые вы сказали мне прокомментировать. Я отменил все изменения, которые делал раньше, я указал правильный путь, как вы мне сказали, и Боже, вы гений, спасибо вам большое. Ошибки, касающиеся FMDB, УПРАВЛЕНЫ! Ура! :) В какой бы файл я ни поместил себя и построил проект (соединительный заголовок или customClassViewController), я не получаю ошибки, так что УРА! Большое спасибо :) 13.04.2018
  • Но теперь у меня все еще есть этот модуль. Нет такого модуля CNPPopupController, который появляется, я не знаю, почему, но я предполагаю, что это совершенно не связано, поэтому я сделаю еще один пост по этому поводу. Не могли бы вы разместить свой комментарий в качестве ответа, чтобы я мог проголосовать за него как за ответ? Заранее спасибо! 13.04.2018
  • Обновил ответ, спасибо. Да, CNPPopupController должен быть отдельным вопросом. 13.04.2018

  • 2

    Если вы используете cocoapod и это фреймворк, вам предлагается НЕ включать его в предварительно скомпилированный заголовок.

    Вместо файлов objc используйте:

    @import framework_name;

    10.04.2018
  • Спасибо за помощь, но теперь я не понимаю? Что не следует включать в предварительно скомпилированный заголовок? 10.04.2018
  • У меня сейчас тоже нет четкой детали по этому поводу. Я считаю, что это должно быть так, как сказал battlmonstr. Более того, цель PCH - никогда не импортировать .h для удобства. Как видно из названия, он фактически импортирует файлы до времени компиляции, что отличается от импорта .h. Поэтому мой совет, если у вас нет очень веской причины, по которой вы должны импортировать их до времени компиляции, иначе: 1, используйте global.h, который содержит все, и импортируйте его везде 2, вы действительно импортируете то, что вам нужно, когда вам нужно . 13.04.2018
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]