Mimari arm64 için Yinelenen Semboller


103

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ı:

görüntü açıklamasını buraya girin

Bunu nasıl düzelteceğine dair bir fikrin var mı?


1
bu çok fazla BFAppLinkReturnToRefererView'e sahip olduğunuz anlamına gelir
Andrey

Ayrıca, masaüstünüzde oturan çerçevelere bağlanmak yerine projenizi biraz temizlemek isteyebilirsiniz. :)
picciano

Benim durumumda extern NSString * const tColor ekledim; .h dosyası ve NSString const * tColor = @ "# 000022"; iki farklı .m sınıfında.
ios_dev

Aradığınızı burada bulabilirsiniz stackoverflow.com/a/46678210/988941
MoOx

Yanıtlar:


66

Hatalardan FacebookSDK.framework zaten Bolts.framework sınıflarını içeriyormuş gibi görünüyor. Projeden ek Cıvata çerçevesini çıkarmayı deneyin.


23
nasıl? lütfen bana adım adım rehberlik eder misin
Imdad Ali

68

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?


Adamsın! Yeni bir xCode 7.3.1 projesi yaptım ve varsayılan ayar EVET :(
Yaro

4
Bu seçenek benim için Xcode'un "Projeyi önerilen ayarlara güncelle" penceresi tarafından açıldı.
commscheck

Sen en
iyisisin

paha biçilmez ipucu, ama doh benim durumumda yardımcı olmadı! : O
Fattie

49

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.


2
Projeyi önerilen ayarlara güncelleyin, bunu nasıl yaparım? hangi menüden demek istedim?
Sazzad Hissain Khan

@SazzadHissainKhan Oluşturma ayarlarınızda.
Yolculuk

22

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

CocoPods - 3.9.0 ile entegre edilmiş Google Rehber SDK'sını kullanıyordum ve bu cevap sorunumu çözdü.
andrewlundy

Teşekkürler, beni çok fazla baş ağrısından kurtardın
Vladimir Sukanica

21

Benim için bir dosyayı yanlışlıkla .m değil, .h olarak içe aktarmıştım


Bu LOL, ama doğru; D
Vladimir

bu benim başıma geldi .. Her şey için kodun tamamlanmasını suçluyorum
user426132

12

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ı.


2
Son derece küçümsenen cevap, yardımın için teşekkürler, Lukas! :)
patreu22

Sorun Yok, sorununuzu çözdüğüne sevindim :)

10

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 .


9

Bu hata, Linker obj dosyalarını bağlamayı denediğinde ortaya çıkar. Bu hata için düşünebileceğim birkaç sebep:

  1. Ç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.

  2. Çoğaltılan Fonksiyon / Sınıf, projede yanlışlıkla iki farklı yerde / dosyada tanımlanır. Yanlış tanımı kaldırın.

  3. 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. :)


9

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;

1
Bunun için teşekkürler! Sabitler.h dosyasıyla ilgili bir sorunla uğraşıyordum lol oluşturuyordum
Sung Min Kim

1
... ben de benim için çalıştı aynı sorunu ve cevabınızı bakıyordu Cevabınız için teşekkür ederim
reetu

1
Teşekkürler, son 3-4 saattir bu sorun için mücadele ediyordum
Sumit Kumar Saha

9

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ü!


2
2. Adım: Sorunumu çözdüm. Teşekkür ederim :)
Dorald

2

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


2

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!


2

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ı.


2

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.


Çok teşekkür ederim, bu hatayı yaptığımı fark etmemiştim, tüm zamanımı alıyordu. Tekrar teşekkürler 👍
Supertecnoboff

1

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.


1

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.


0

Benim sampleMethodiç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.


0

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.


0

Benim için sorun, manuel olarak bir çerçeve ekledim, ancak daha sonra aynı çerçeveyi CocoaPods'a eklediğimi bilmeden ekledim. Birini veya diğerini çıkardıktan sonra sorun ortadan kalktı



0

"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.


0

Birisi bunu Flutter üzerinde çalışırken deniyorsa, pod deintegrate, pod init'i denemeyin.

Nasıl çözdüm flutter clean, flutter run -d [iOS Device]

Umut birisine yardım edebilir.


0

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.