Xcode Projemi çalıştırmayı denediğimde, yinelenen sembollerim olduğunu belirten bir hata ile başarısız oluyor. İnternette bu kopyaları bulduğum yere baktım ama hiç şansım olmadı:
Bunu nasıl düzelteceğine dair bir fikrin var mı?
Xcode Projemi çalıştırmayı denediğimde, yinelenen sembollerim olduğunu belirten bir hata ile başarısız oluyor. İnternette bu kopyaları bulduğum yere baktım ama hiç şansım olmadı:
Bunu nasıl düzelteceğine dair bir fikrin var mı?
Yanıtlar:
Benim için "Ortak Blok Yok" derleyici ayarını HAYIR olarak değiştirmeye yardımcı oldu: Hemen hemen mantıklı görünüyor, ayar burada açıklanıyor: GCC_NO_COMMON_BLOCKS ne için kullanılıyor?
Xcode 8'i kullanarak, "Projeyi önerilen ayarlara güncelle" seçeneği projem için "Ortak Blok Yok" seçeneğini AÇIK hale getirdi.
Tekrar KAPALI konuma getirmek her şeyi düzeltti.
Bir bölmeyi düşürürken bölmelerimi karıştırdım ve bölmeleri kaldırıp yeniden yükleyerek, mimari arm64 için yinelenen sembollerle sorunu çözmeyi başardım :
pod deintegrate
pod install
Benim için bir dosyayı yanlışlıkla .m değil, .h olarak içe aktarmıştım
Başka bir Çözüm şudur:
Seç Projesi -> Hedef -> Yapı faz -> Derleme kaynak -> (Senin durumunda 3 son hata hattında belirtilen dosya için arama BFAppLinkReturnToRefererView.o ).
Ardından arama sonucunda 1 veya 2 dosya göreceksiniz.
Bunlardan birini kaldırın ve tekrar derleyin . Şimdi yeniden derlenmelidir, çünkü geriye yalnızca bir dosya kaldı ve derleme için başka çakışma yok.
Bu işe yaramazsa, muhtemelen dosyada hatalar vardır ve hepsini kaldırıp yeniden derlemelisiniz. Tekrar çalışmalı.
Xcode 8'e yükseltirken, önerilen ayarlara yükseltmem için bir mesaj aldım. Kabul ettim ve her şey güncellendi. Derleme zamanı sorunu almaya başladım:
XXXX için yinelenen simge XXXX için yinelenen simge XXXX için yinelenen simge
Toplam 143 hata. Hedefe Gitti-> Yapı ayarları -> Ortak Blok Yok -> HAYIR olarak ayarlayın. Bu sorunu çözdü. Sorun, entegre projelerin ortak kod bloklarına sahip olması ve dolayısıyla bunları derleyememesiydi. Açıklama burada bulunabilir .
Bu hata, Linker obj dosyalarını bağlamayı denediğinde ortaya çıkar. Bu hata için düşünebileceğim birkaç sebep:
Çoğaltılmış İşlev / Sınıf, projede iki farklı yerde / dosyada tanımlanmıştır ve bunlardan yalnızca birinin herhangi bir yapı komutu varyasyonu için derlemesi gerekiyordu. Ama bir şekilde bu iki dosya da projenizde derlendi. Bu nedenle, eğer if-else koşullarınızı veya derlenmesi gereken dosyalar listesine src dosyalarını ekleyen diğer bağımlılıkları kontrol etmeniz ve belirli build komutunuz için gerekli olmayan dosyayı kaldırmanız gerekir.
Çoğaltılan Fonksiyon / Sınıf, projede yanlışlıkla iki farklı yerde / dosyada tanımlanır. Yanlış tanımı kaldırın.
Tekrar oluşturmadan önce OBJ dizininizi temizleyin, bu çakışmaya neden olabilecek önceki sürümlerinizden bazı eski obj dosyaları olabilir.
Not: Uzman değilim, ancak bu sorunla karşılaştığımda bu sorunu çözdüm. :)
Xcode 7 veya 8'e geçiyorsanız ve gerçekten eski bir projeyi açıyorsanız, şu sorunla karşılaştım:
içinde SomeConstFile.h
NSString * const kAConstant;
içinde SomeConstFile.m
NSString *const kAConstant = @"a constant";
Derleyicinin önceki sürümleri, başlık dosyasındaki tanımın harici olduğunu ve bu nedenle SomeConstFile.h'nin her yere dahil edildiğini varsayıyordu.
Şimdi bu sabitleri harici olarak açıkça belirtmeniz gerekiyor:
içinde SomeConstFile.h
extern NSString * const kAConstant;
Patch'in altında benim için çalışıyorum .. :)
Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No
Step 2: Go to TARGETS -> Build Settings -> enable testability -> No
Yeniden HAYIR olarak ayarlamak sorunu çözdü!
Eh, bazen FB gibi SDK'yı veya Vuforia veya GoogleAnalytics gibi Kitaplıkları kullanırken, örnek projeler eklemek, zaten Çerçeveler içermesi sorununa neden olabilir ve bu nedenle, zaten eklediğinizde manuel olarak eklediğiniz sembolleri tekrarlamadığınızdan emin olmalısınız. örneklere dahil
Benim için sorun, bu iOS8'e kadar iyi çalışan const yaratma tarzıydı. Şu gibi birkaç satırım vardı:
int const kView_LayoutCount = 3;
.h dosyamda. Ortak bloklar HAYIR olarak ayarlandığında, benzer altı satır 636 bağlayıcı dosyasında sonuçlandı. (EVET ise 14k +). Değer bildiriminden .h çıkarıldıktan sonra satırlar .m'ye taşındı ve derleme iyi oldu.
Umarım bu başkalarına yardımcı olur!
Benim durumumda neden çok aptalcaydı:
Makroları tanımladığım bir Constant.h dosyam vardı. Orada NSString yapmayı düşündüm. ve bunu yaptı:
NSString const *kGreenColor = @"#00C34E";
bu, Mimari için Yinelenen Semboller sorununa neden oldu arm64 ve Bağlayıcı komutu çıkış kodu 1 ile başarısız oldu. Const NSString satırının kaldırılması benim için çalıştı.
Dahil etme dosyanızı kontrol edin, bu sorunu yaşadım çünkü yanlışlıkla "dosyaadı.h" yerine "dosyaadı.m" içe aktardım, otomatik düzeltme (sekme) "h" yerine "m" koydu.
Hatalardan, herhangi bir Sınıfın birden çok kez göründüğü görülür. Çalışacağı Sınıfları bulun ve kaldırın.
AppDelegate.h ve .m dosyalarını birden çok kez oluşturuyorum. Bu yüzden bu hata oluşacak.Sonunda benim için iyi çalıştığı sınıfları bulun ve kaldırın.
Bu sorunu çözmek için Build phases'e gidin ve (facebookSDK, unityads) gibi yinelenen dosyaları arayın ve silin (file.o uzantılı) sonra yeniden oluşturun.
Benim sampleMethod
için ViewController_A adında bir yöntem oluşturdum ve ViewController_B'de de aynı yöntemi oluşturdum, bana bu hataya neden oldu, ardından ViewController_B'deki yöntem adını değiştirdim secondSampleMethod
. Hatayı düzeltti.
Kodu azaltmak ve birçok yerde aynı kodu kopyalamamak için iyi bir özellik gibi görünüyor.
Hayır Ortak bloklarını Evet'den Hayır'a değiştirmeyi ve ardından test edilebilirliği Evet'den Hayır'a etkinleştirmeyi denedim. İşe yaramadı. Derleme aşamalarında da yinelenen dosyaları kontrol ettim, ancak yinelenen dosyalar yok.
Bu sorunu, .m dosyamdaki bir değişkeni bir yöntemin dışında tembel olarak tanımlıyordum, sonra başka bir .m dosyasında, bir yöntemin dışında aynı ada sahip başka bir değişkeni tanımlıyordum. Bu, genel değişken adı yineleme sorununa neden oluyordu.
"Mimari armv7 için 158 yinelenen simge, mimari arm64 için 158 yinelenen simge" yazan bu hatayı çözebildim --- Eğer siz de bu alıyorsanız, bu, içe aktaran bir dosyayı derlemeye çalıştığınız anlamına gelir veya C ++ koduna veya dosyalarına referanslara sahip bir çerçeve veya statik kitaplığı devralma. Bunu halletmenin kolay bir yolu, .m dosyanızın uzantısını .mm olarak değiştirmektir. Bu, eğer Objective C kullanıyorsanız, Swift'den emin değilsiniz.
Ayrıca derleme ayarlarınızda - "diğer bağlayıcı bayraklarını" -lc ++ olarak güncelleyebilirsiniz.
Plz Ayarı değiştirin.
Adım 1: HEDEFLER'e gidin -> Yapı Ayarları -> Ortak Blok Yok -> Hayır
Adım 2: HEDEFLER -> Yapı Ayarları -> test edilebilirliği etkinleştirin -> Hayır'a gidin