Ссылка на "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 ": файл модуля устарел"
Удаление модуля и добавление его снова не помогло. Удаление полученных данных также не помогло. Эта ошибка также появляется при возвращении к рабочему коммиту.
Ответы
Ответ 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;
Теперь все эти раздражающие предупреждения исчезли!