Ссылка на "X" неоднозначна
После нескольких изменений в моем проекте я внезапно получаю ошибку сборки:
Reference to 'kCGImageAlphaPremultipliedLast' is ambiguous
и когда при взгляде на ошибку показывает, что на нее ссылаются 4 раза
Может кто-нибудь сказать мне, как это может произойти и как я могу выяснить, что вызывает это? Я не импортирую ничего явно из CoreGraphics, а мой файл префиксов импортирует только "Foundation.h" и некоторые собственные макросы. Я, однако, импортирую несколько заголовков, содержащих чистый код на C, но они все заключены в нечто вроде этого:
#ifndef __MYCCODE_H
#define __MYCCODE_H
// imports here
// c code here
#endif
Это происходит в xcode 5 с использованием LLVM 5.1
Изменить: это, кажется, другая проблема с этим проектом. комментируя эту строку кода, я получаю еще одну ошибку:
Malformed or corrupted AST file: 'Unable to load module "/Users/xxx/Library/Developer/Xcode/DerivedData/ModuleCache/1NHZ5MC2OSMJV/CoreImage.pcm": module file out of date'
удаление модуля и добавление его снова не помогло. удаление производных данных также не помогло. эта ошибка также появляется при возвращении к рабочему коммиту
8 ответов
Хорошо, после создания нового проекта и копирования всего в этот проект, сборка прошла успешно, однако я несколько раз снова получал эту ошибку "Неправильный или поврежденный файл AST", но ее можно решить:
- Очистить проект
- Удаление всего содержимого внутри "~/Library/Developer/Xcode/DerivedData/ModuleCache/" (кнопка внутри окна органайзера у меня не работала)
- Очистить еще раз
- Построить проект
после этого он работает просто отлично, за исключением того, что я должен делать это время от времени
Я также сделал diff для старого проекта, и кажется, что многие тесты и другие старые вещи застряли там из-за тестирования, поэтому, если у вас есть это, проверьте файл настроек вашего проекта на наличие старых вещей.
я думал, что xcode и я можем быть друзьями однажды. думаю нет...
Это может быть вы импортируете так:
#import "xxxx.h"
Я исправляю это через это:
#import
У меня возникла эта проблема, когда я дважды импортировал заголовочный файл. После удаления одного из них проблема исчезает.
Для тех, кто все еще борется с проблемой: ни одно из предложенных решений не сработало в моем случае. Я компилирую все свои фреймворки, используя Carthage, и получаю эти ошибки в моем основном проекте всякий раз, когда я импортирую заголовок фреймворка, который использует фреймворк, который также используется моим основным проектом. Что в итоге решило, так это отключив "Модули" в основном проекте.
Удалить use_frameworks! из файла pod исправить мою неоднозначную проблему.
Ну, некоторые решения здесь хороши, но use_frameworks! это именно то, что мне нужно сейчас, даже если это вызвало эту проблему. Но похоже, что сборка не нравится, когда я использую фреймворки, а заголовок ссылается дважды, как это
#import "TSMessage.h"
#import "TSMessage+CSExtension.h"
но проблема уходит, когда он компилируется так
#import "TSMessage+CSExtension.h"
Использование
#import "anyviewcontroller.h"
вместо любого модуля
@import anymodule;
Я использую LGSideMenuController, когда я интегрирую его в первый раз, он работает хорошо, но я не знаю, почему я получил эту ошибку через некоторое время.
поэтому я заменил модуль @import LGSideMenuController;
в заголовочный файл #import "UIViewController+LGSideMenuController.h"
и ошибка уходит.
Я только что получил те же предупреждения, засоряющие мой отчет о сборке (но только под треугольником). В конце концов, что работало для меня, так это чтобы КАЖДОЕ использование:
#import <Module/Module.h>
в приложении было заменено:
@import Module;
Теперь все эти раздражающие предупреждения исчезли!