Подтвердить что ты не робот

Ссылка на "X" неоднозначна

После нескольких изменений в моем проекте я внезапно получаю эту ошибку сборки:

Ссылка на 'kCGImageAlphaPremultipliedLast' неоднозначна

Reference is ambiguous error screenshot

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

Xcode error screenshot

Может кто-нибудь сказать мне, как это может произойти и как я могу выяснить, что вызывает это? Я не импортирую ничего явно из CoreGraphics, а мой файл префиксов импортирует только "Foundation.h" и некоторые собственные макросы. Однако я импортирую несколько заголовков, содержащих чистый C-код, но все они заключены в нечто вроде этого:

#ifndef __MYCCODE_H
#define __MYCCODE_H
// imports here
// c code here
#endif

Это происходит в Xcode 5 с использованием LLVM 5.1

Изменение: это, кажется, другая проблема с этим проектом. комментируя эту строку кода, я получаю еще одну ошибку:

Неисправный или поврежденный файл AST: "Невозможно загрузить модуль"/Users/xxx/Library/Developer/Xcode/DerivedData/ModuleCache/1NHZ5MC2OSMJV/CoreImage.pcm ": файл модуля устарел"

Удаление модуля и добавление его снова не помогло. Удаление полученных данных также не помогло. Эта ошибка также появляется при возвращении к рабочему коммиту.

4b9b3361

Ответ 1

Хорошо, создав новый проект и справившись со всем этим проектом, сборка была успешной, однако я снова получил эту ошибку "искаженный или поврежденный файл AST", но ее можно решить:

  • Очистить проект
  • Удаление всего внутри '~/Library/Developer/Xcode/DerivedData/ModuleCache/' (кнопка внутри окна органайзера не работает для меня)
  • Очистите еще раз
  • Проект сборки

после этого он работает просто отлично, за исключением того, что я должен делать это исправление время от времени

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

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

Ответ 2

Это возможно, вы импортируете вот так:

#import "xxxx.h"

Я исправляю это через:

#import < хххх /xxxx.h >

Ответ 3

У меня возникла эта проблема, когда я дважды импортировал файл заголовка. После удаления одного из них проблема исчезает.

Ответ 4

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

Ответ 5

Удалить use_frameworks! из файла pod исправляет мою неоднозначную проблему.

Ответ 6

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

#import "TSMessage.h"
#import "TSMessage+CSExtension.h"

но проблема исчезает, когда она компилируется как

#import "TSMessage+CSExtension.h"

Ответ 7

использовать

#import "anyviewcontroller.h"

вместо любого модуля

@import anymodule;

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

поэтому я заменил модуль @import LGSideMenuController; на заголовочный файл. #import "UIViewController+LGSideMenuController.h"

и ошибка исчезает.

Ответ 8

Я только что получил те же предупреждения, засоряющие мой отчет о сборке (но только под треугольником). В конце концов, то, что сработало для меня, - это обеспечить КАЖДОЕ использование:

#import <Module/Module.h> 

в приложении было заменено:

@import Module;

Теперь все эти раздражающие предупреждения исчезли!