Ответ 1
Это может произойти, если вы случайно #import
a .m
вместо .h
!
Получение следующей ошибки при попытке использовать Layar SDK в моем существующем приложении. Как я могу это решить?
Ld /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos/hub.app/hub normal armv7
cd /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub
setenv IPHONEOS_DEPLOYMENT_TARGET 5.0
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -L/Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/ZBarSDK -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/Infosound/Lib -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/CrittercismSDK -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/UserVoiceSDK-2.0.4 -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/Libraries -F/Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos -F/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub -filelist /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Intermediates/hub.build/Debug-iphoneos/hub.build/Objects-normal/armv7/hub.LinkFileList -dead_strip -ObjC -all_load -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=5.0 -lMPOAuthMobile -lsbjson-ios -framework LayarSDK -framework Social -framework AddressBook -framework AddressBookUI -framework UIKit -framework QuartzCore -framework Twitter -framework SystemConfiguration -framework Security -framework OpenAL -framework OpenGLES -framework MessageUI -framework MediaPlayer -framework Foundation -framework CoreGraphics -lc++ -framework CoreTelephony -framework CoreVideo -framework CoreMotion -framework CoreMedia -framework CoreLocation -framework CoreData -framework CoreAudio -framework CFNetwork -framework AVFoundation -framework AudioToolbox -lxml2 -liconv -lz -framework MobileCoreServices -lzbar -linfosound -lCrittercism_v3_4_6 -lUserVoice -o /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos/hub.app/hub
duplicate symbol _jpeg_free_large in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_free_small in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_get_large in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_get_small in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_mem_available in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_mem_init in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_mem_term in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_open_backing_store in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_free_large in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_free_small in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_get_large in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_get_small in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_mem_available in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_mem_init in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_mem_term in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_open_backing_store in:
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _main in:
/Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Intermediates/hub.build/Debug-iphoneos/hub.build/Objects-normal/armv7/main.o
/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jpegtran.o)
ld: 17 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Это может произойти, если вы случайно #import
a .m
вместо .h
!
Как правило, такая ошибка возникает из-за дублирования классов и xib в папке проекта. Например, в моем проекте у меня были некоторые файлы классов, дублированные (.h/.m файлы). Вы можете увидеть эти повторяющиеся классы в target->Build phases->compile sources
.
Просто посмотрите и удалите лишние классы. Проблема будет решена.
Происходит со статическими переменными в файле заголовка (заголовочный файл, включенный в более чем один файл реализации).
Я получал эту ошибку, потому что я использовал предупреждающие флаги Xcode. Ошибка GCC_NO_COMMON_BLOCKS = YES. Устанавливая это, чтобы НЕТ, исправил это для меня.
Эта ошибка также может быть вызвана, если у вас есть циклический импорт.... позволяет предположить, что у вас есть VC1.h
, VC2.h
и VC3.h
, которые вызовут ошибку: (все файлы .h
)
VC1
и VC1 импортирует VC2
VC2
, а VC2 импортирует VC3
, а VC3 импортирует VC1
Решение:
.m
вместо .h
.h
нуждается в этом классе, используйте @class (nameOfClass);
вместо импорта .h
Будьте осторожны при использовании #import
, импортируйте только то, что вам нужно.
Я столкнулся с этой проблемой раньше. Причина в том, что я скопировал некоторые методы и переменные, объявленные в теле реализации из одного класса в другой. Поэтому переименуйте эти методы и переместите эту переменную в область объявления интерфейса = > решена.
Будьте осторожны, если вы используете Cordova iOS 4.5.0
, может произойти ошибка такого рода
duplicate symbol _OBJC_METACLASS_$_CDVLogger in:
/Users/toto/Library/Developer/Xcode/DerivedData/imp-hkzujazvkracgugyxunzwnzpeiqx/Build/Intermediates/imp.build/Debug-iphoneos/imp.build/Objects-normal/armv7/CDVLogger.o
/Users/toto/Library/Developer/Xcode/DerivedData/imp-hkzujazvkracgugyxunzwnzpeiqx/Build/Products/Debug-iphoneos/libCordova.a(CDVLogger.o)
ld: 2 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Это может быть связано с использованием cordova-plugin-console
, который больше не полезен в Cordova iOS 4.5.0
(и также разбивает сборку!).
Чтобы исправить его
cordova plugin remove cordova-plugin-console
См. ссылку: https://cordova.apache.org/announcements/2017/09/08/ios-release.html
Я видел ту же проблему, но с разными библиотеками. Исправление было следующим:
Target -> Build Phases -> Linked Binary With Libraries
Убедитесь, что библиотеки включены. В моем случае у моего проекта были libPods *.a(я использую CocoaPods для зависимости mgmt), но также несколько библиотек, которые были включены в мои разделяемые библиотеки pod, и это вызывало дубликаты.
Я просто исправил эту ошибку. У меня была CocoaPods, устанавливающая несколько фреймворков (AWS, SDWebImage, AFNetworking). Я вручную перетащил в 2 фреймворка, Facebook и ImageIO. Большинство ошибок "дублированного символа" были пойманы на классах Facebook. Я удалил фреймворк и добавил его в подфайл. Должна быть ошибка или дублирование в библиотеках, требуемых Facebook.
Моя проблема была... странная. Я не уверен, как это произошло, но в какой-то момент Xcode решил добавить еще один древний файл .m
еще раз в файл .pbxproj
. Единственный способ, которым я нашел это, - сравнить мои изменения в git, глядя на версию кода, в котором сначала была выполнена сборка.
У меня были дубликаты файлов в Xcode. Физически существовал один m файл и один h файл. Но в проекте он удваивался, вызывая дубликаты в компиляционных источниках. После удаления дубликатов m и h проблема с файлом была решена.
Это потому, что симулятор iPhone получил дубликаты .h и .m ссылок. Я много часов боролся за эту ошибку.
Мое решение было простым. Я скопировал проект на мой накопитель и стирался из памяти компьютера.
Открыл новый проект, скопировал раскадровку и добавил файлы .h &.m. Некоторые ошибки исправлены путем выбора классов снова в виде хранилища.
У меня также были повторяющиеся символы. Я просто переименовал процедуру (app → app1, app2) и связанные поля app.XXX → app1.XXX. и это сработало!
Смотрите: (в файле .m)
AppDelegate* app1;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
app1 = (AppDelegate *)[[UIApplication sharedApplication] delegate];
}
return self;
}
(...)
- (int) getLimit
{
if (app1.product2buyed)
return MAXID;
else if (app1.product1buyed)
return 70;
else
return 10;
Пожалуйста, проверьте, добавлено ли какое-либо фреймворк более одного раза, удалите всю фреймворк, добавив несколько раз, а затем снова перетащите и снова.
Надеюсь, это решит вашу проблему. Счастливое кодирование.
У ВАС МОЖЕТЕ УСТАНОВИТЬ ПОДОБНЫЕ ПЛАСТИНЫ.
Я использую Кордову, а также имеет несколько дубликатов символов. Я установил два похожих плагина:
Исправлено, удалив "email-адрес плагина cordova", используя...
cordova plugin remove cordova-plugin-email
После этого я побежал...
cordova prepare
cordova build ios
Теперь моя конструкция xCode работала как шарм! Woooo Hooo!