Ответ 1
i столкнулась с такой же проблемой сегодня в xcode 8 версии 8.3.2
щелкните правой кнопкой мыши по проблеме → раскройте в журнале
то вы можете проверить, что вызывает эту проблему.
Я не могу избавиться от этой ошибки!
Я пробовал все виды вещей, таких как очистка производных данных (Preferences-> Locations-> щелкнуть серой стрелкой, чтобы открыть папку производных данных в Finder-> щелчок правой кнопкой мыши, перейти в корзину), очистить проект (CMD + Shift + K или Product-> Очистить), обновив карфаген и зависимости, проверил другие ответы в StackOverflow (в основном это настройки в Build Settings/Phases) и отозвал приложение из github и т.д.
Этот же проект работает на компьютерах моих сотрудников.
РЕДАКТИРОВАТЬ: Из текущего ответа с самым высоким рейтингом я смог отладить немного дальше... Я все еще не уверен, как исправить, хотя. Похоже, у меня есть что-то в проекте дважды? Я посмотрел и не могу найти ничего, что появляется дважды!
i столкнулась с такой же проблемой сегодня в xcode 8 версии 8.3.2
щелкните правой кнопкой мыши по проблеме → раскройте в журнале
то вы можете проверить, что вызывает эту проблему.
Возможно, вы установили файл подкачки, и вы все еще пытаетесь построить из файла .xcodeproj
вместо .xcworkspace
Единственное, что сработало для меня, это запустить pod deintegrate
и pod install
Вы попробовали чистую? cmd + shift + k
Хорошо... Итак, вот что решило мою проблему...
в файле делегата приложения:
#import "AppDelegate.h"
#import "DarkSkyAPI.h"
//#import "Credentials.h"
Я импортировал Credentials.h уже в файле DarkSkyAPI.m в моем проекте. Комментируя дополнительный импорт, ошибка исчезла!
Некоторые вещи, которые можно упомянуть и, возможно, помогут кому-либо в будущем. Ответ @umairqureshi_6 помог мне в этом процессе, но не решил его. Он привел туда, где я смог выкопать информацию. Я продолжал видеть файлы AppDelegate и DarkSkyAPI, появляющиеся в журнале ошибок, и информация, которую он вытаскивала из файла Credentials, вызывала ошибку. Я знал, что это должно быть в одном из этих 3-х файлов, поэтому я сразу же проверял импорт, потому что я помнил, слышал, что .h несет все импорт из своего .m файла. Boom!
Теперь я уже ответил. Но если это поможет кому-то сэкономить время: У меня была такая же ошибка. Я проверил все, чтобы найти очень маленькую и тупую ошибку с моей стороны. Я импортировал основной файл данных ManagedObject в контроллер представления моего проекта. Я случайно импортировал файл .m вместо файла .h, который вызывал дубликат символа в ошибке архитектуры (команда компоновщика не удалась), потому что мой .m файл класса свойств импортирует .h файл основных данных класса и, следовательно, вызывать дублирование импорта.
Итак, просто проверьте, не импортировали ли вы нужные файлы, прежде чем пытаться использовать несколько решений.
Многие решения упомянуты выше. Никто не работал для меня (но, пожалуйста, попробуйте выше).
Выберите "Проект" → "Выбрать цель" → "Связанные рамки и библиотеки" → "Добавить все библиотеки модулей". (удалить, если они существуют во встроенных двоичных файлах)
Теперь удалите их из Framework Folder в левом файловом обозревателе xcode.
Это решило мою проблему.
Выберите project-> Build Phase-> Link Binary с библиотеками и добавьте все библиотеки pod.
У меня была такая же проблема с использованием Carthage для зависимостей.
Просто зайдите в "Выбор проекта" → "Настройки сборки" → "Поиск включения битового кода" → Если выбрано "Да", выберите "Нет"
Это решило эту проблему для меня.
У меня была такая же проблема.
Причина была в том, что я объявил одну и ту же глобальную переменную в 2 файлах. Таким образом, он показывал ту же ошибку, говоря 2 одинаковых символа.
Решение было удалить эти переменные.
Для любого, имеющего эту проблему с платформой Flurry. Это то, что исправило мою проблему. Для меня проблема была в том, что я импортировал следующие файлы, но никогда не использовал их. "libFlurryTVOS_9.2.3" "libFlurryWatch_9.2.3"
Поэтому все, что мне нужно было сделать, это перейти к настройкам целевого проекта и удалить эти 2 файла из раздела "Связанные рамки и библиотеки", и проблема была решена.
Убедитесь, что флажок Find Implicit Dependencies
установлен.
(Продукт → Схема → Редактировать схему → Построить → Найти неявные зависимости)
Мне просто нужно было сделать import Foundation
!
Я использовал Kitura для серверной части Swift и продолжал забывать об этом!
Вот моя проблема и решение:
Я удалил два файла из исходного кода, используя исходное дерево (контроллер версии). После применения diff, который содержит два класса, которые я удалил, Xcode не добавил его автоматически. Поэтому я получил ошибку компоновщика.
Я вручную добавил файлы, щелкнув правой кнопкой мыши по имени группы и выбрав "Добавить файлы в". Теперь моя ошибка решена.
Если кто-то столкнулся с ошибкой компоновщика в отношении файла класса, попробуйте добавить его вручную.
Не было этой проблемы, когда я собрал и запустил на собственном устройстве. Была только эта проблема с симуляторами. Я просто перезагрузил компьютер и запустил его. Это сработало.
В моем случае причиной ошибки является библиотека, которая была связана два раза.
Я использую react-native
поэтому он был связан автоматически с помощью реактивной react-native link
и вручную в xcode.
В моем случае я изменил имя Target
в моем Podfile
поэтому он создает ту же ошибку для меня.
Решение
Просто зайдите project-> Build Phase->Link Binary with libraries
FrameWorks
Удалите старые FrameWorks
, нажав minus button(-)
очистите и снова запустите. Это работает мне.
Удалить .framework
.
Другие ответы не спомогли мне, поэтому здесь я поделюсь своим решением на случай, если оно может помочь кому-то другому:
Моя проблема заключалась в том, что я настраивал Podfile моего XCode-Project для неправильной платформы. Изменение "platform: ios" в начале моего Podfile на "platform: macos" помогло мне избавиться от ошибки.
Я тестировал платформу Sparkle с CocoaPods.
К сожалению, я поставил "pod 'Sparkle', '~> 1.21'" в PodFile не в том месте. Я поместил это под Тестированием (для модульных тестов).
После размещения в правильном месте в PodFile, все в порядке.
Попробуйте удалить папку с производными данными в следующем месте:
/Users/Главная/Library/Разработчик/Xcode/DerivedDataSTRONG >
После удаления, создайте проект.
Для меня удаление RxSwift сработало!
У меня такая же проблема. Если вы проверяете какой-либо проект github, то вместо использования git clone используйте git lfs clone, так как иногда некоторые большие файлы не клонируются должным образом при использовании только git. Также убедитесь, что ваш бит-код отключен.
Для меня в файле блокировки gem указана более старая версия cocoapods, чем та, которую я установил. Мне пришлось переустановить и запустить bundle exec pod install
вместо pod install
Кажется, что проблема отличается для большинства из нас, и сообщение об ошибке содержит приличную информацию. В моем случае цель развертывания была установлена на 10.13
по линии export MACOSX_DEPLOYMENT_TARGET=10.13
, но я выполнял 10.14
. Поэтому мне пришлось переключить свою цель развертывания на 10.14
в разделе "Общие сведения"> "Информация о развертывании", чтобы символы, связанные с ITLibrary, снова были доступны.
cd /Users/foo/src/scrobble/macos/itunes-scrobble
export MACOSX_DEPLOYMENT_TARGET=10.13
... SNIP ...
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_ITLibMediaItem", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_ITLibPlaylist", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_ITLibrary", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Из меню Product → Clean Build Folder у меня работает.
У меня возникли те же проблемы при сборке проекта Ionic 1.
Мне удалось решить проблему после удаления файла CDVLogger.h & CDVLogger.m
Хорошо, у меня была та же самая проблема только сегодня, и я начал искать ее, когда наткнулся на эту тему. Я не закончил читать вопрос, когда мне пришло в голову ответ: я объявил класс с пустым конструктором
class MyClass{
MyClass();
void func_one(){
// code
}
void func_two(){
// code
}
~MyClass(){
cout << "Deleting object" << endl;
}
};
Тогда я подумал, почему бы не завершить (не уверен, правильно ли я здесь выбрал слово, но кого это волнует) конструктор моего класса фигурными скобками ({}
). Так я и сделал:
class MyClass{
MyClass(){}
void func_one(){
// code
}
void func_two(){
// code
}
~MyClass(){
cout << "Deleting object" << endl;
}
};
Проблема устранена, мой код начал работать отлично.
Я знаю, что хорошей практикой является расследование проблемы и поиск реальной причины, но это сработало для меня.