Bağlayıcı Komutu çıkış kodu 1 ile başarısız oldu (çağrıyı görmek için -v kullanın), Xcode 8, Swift 3


114

Bu hatadan kurtulamıyorum!

Türetilmiş Verileri temizleme (Tercihler-> Konumlar-> Bulucu'da Türetilmiş Veri klasörünü açmak için gri oka tıklayın -> sağ tıklayın, çöp kutusuna taşı), projeyi temizleme (CMD + Shift + K veya Ürün) gibi her türlü şeyi denedim -> Temizle), kartajı ve bağımlılıkları güncelleyerek, StackOverflow'daki diğer yanıtları kontrol etti (çoğunlukla Yapı Ayarları / Aşamalarında yapılan ayarlamalar) ve uygulamayı github'dan vb. Yeniden klonladı.

Aynı proje ortak çalışanların bilgisayarlarında da çalışıyor ..

DÜZENLEME: Şu anki en yüksek puanlı cevaptan biraz daha fazla hata ayıklayabildim ... Yine de nasıl düzelteceğimi bilmiyorum. Görünüşe göre projede iki kez bir şeyim var? Baktım ve iki kez görünen hiçbir şey bulamadım!

İşte günlüğün bir resmi:



Sorununuzu çözmediyse neden en çok oy alan cevabı kabul ettiniz?
benomatis

Yanıtlar:


160

bugün xcode 8 sürüm 8.3.2'de aynı sorunla karşılaşıyordum

sorunu sağ tıklayın -> günlükte göster

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

o zaman bu soruna neyin sebep olduğunu kontrol edebilirsiniz

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


Bunun için teşekkürler! İşte günlüğe gelenler
Jake Dobson

Sonunda bunu çözdüm. Beni doğru yöne yönlendirmeye yardım ettin! Xcode'un tıklandığında günlüğü göstermemesi gerçekten berbattı ... Bana biraz zaman kazandırabilirdi!
Jake Dobson

Günlükte Açığa Çıkar ipucu için teşekkürler. Kullanabileceğimi bilmiyordum
KarenAnne

1
@GhasemTabatabaei Aşağıdaki cevabımı kontrol edin
Jake Dobson

81
Bu neden kabul edilen cevap? Aslında soruyu yanıtlamaz, yalnızca çözüme ulaşmada potansiyel olarak yardımcı olur.
Tom Oakley

116

Belki bir pod dosyası yüklediniz ve hala .xcodeprojyerine dosyadan oluşturmaya çalışıyorsunuz.xcworkspace


4
Hayır, bu nedenle Kartaca kullandım. Yine de, bu aynı hatayı yapan diğer insanlara yardımcı olabilecek meşru bir cevap!
Jake Dobson

1
Mevcut bir projeye m $ AppCenter kodu ekledim ve Kapsüllere ihtiyacı vardı. Neler olduğu hakkında hiçbir fikrim yok ve bunu .xcodeprojbir yıldan fazladır yapıyordu .. Bu kadar basit bir şey!
Dennis Smolek

1
Düzeltmem biraz bununla ilgiliydi. Yakın zamanda bazı bağımlılıkları yükseltmiştim ve proje şimdi CocoaPods kullanıyordu. Önceden hep proje dosyasından çalışıyordum. İçinde hem projemin hem de Pod'ların bulunduğu çalışma alanı dosyasını açtım ve her şey yolunda gitti.
Rozgonyi

40

Benim için işe yarayan tek şey koşmaktı pod deintegratevepod install


Soru cevaplandı. Yorumumu aşağıda görüyorsanız, o dosyaya zaten aktarılmış olan bir dosyayı içe aktarmıştım. Proje, dosyaya iki kez başvurmaya çalışırken yarış durumundaydı.
Jake Dobson

tamam evet o jsut benim için işe yaramadı ve Google'da aradığımda bu ortaya çıktı, bu yüzden id deniyorum ve başka birine yardım et diye düşündüm ... bu konuda yeniyim, cevabımı silmeli miyim?
Charles Harring

Zaten orada olduğu için sanmıyorum. Eminim birisi faydalı bulabilir. Kullandığım uygulama cocoapod kullanmıyordu. Mesele şu ki, bu hata çok yaygındır ve kendisi hakkında çok az bilgi verir. Her projeye bağlı olarak pek çok çözüm bulunabilir.
Jake Dobson

Günümü kurtarıyor! Tanrı seni korusun!
user2612604

19

temizlemeyi denedin mi? cmd + üst karakter + k


8
Oh evet .. birçok kez!
Jake Dobson

Kelimenin tam anlamıyla aldığım tek şey bu ... Metne tıklamak, çoğu hata için olduğu gibi bana herhangi bir ekstra bilgi veya dosyanın bulunduğu yere göndermez. Konsolda hiçbir şey yok, bu hata nedeniyle uygulamayı hiç çalıştırmıyor ..
Jake Dobson

FWIW, son zamanlarda bir SDK ile derleme yaparken bu sorunla karşılaştım ve @ FranciscoPerez'in önerisi hile yaptı. Hata ayıklamaya çok fazla dalmadan önce bunu kesinlikle ilk adım olarak önerin.
riastrad

9

Tamam ... İşte sorunumu çözen şey ...

Uygulama Temsilcisi Dosyasında:

#import "AppDelegate.h"
#import "DarkSkyAPI.h"
//#import "Credentials.h"

Credentials.h dosyasını zaten projemdeki DarkSkyAPI.m dosyasında içe aktarmıştım. Fazladan içe aktarmanın yorumlanması hatayı ortadan kaldırdı!

Gelecekte bahsetmek ve belki de birine yardımcı olmak için bazı şeyler. @ umairqureshi_6'nın yanıtı süreç boyunca bana yardımcı oldu, ancak çözmedi. Bilgiyi bulabildiğim yere götürdü. Hata günlüğünde görünen AppDelegate ve DarkSkyAPI dosyalarını görmeye devam ettim ve Credentials dosyasından aldığı bilgiler hataya neden oluyordu. Bu 3 dosyadan birinde olması gerektiğini biliyordum, bu yüzden ithalatları hemen kontrol ettim, çünkü .h dosyasının tüm içe aktarımları .m dosyasından taşıdığını duyduğumu hatırladım. Boom!


6

Şimdi soru zaten cevaplandı. Ama bu birinin biraz zaman kazanmasına yardımcı oluyorsa: Ben de aynı hatayı yaptım. Benim açımdan çok küçük ve aptalca bir hata bulmak için her şeyi kontrol ettim. Projemin bir görünüm denetleyicisine bir çekirdek veri ManagedObject özel dosyasını içe aktardım. Mimari hatasında yinelenen sembole neden olan .h dosyası yerine yanlışlıkla .m dosyasını içe aktardım (linker komutu başarısız oldu) çünkü özellikler sınıfımdaki .m dosyam, çekirdek veri sınıfının .h dosyasını içe aktarıyor ve bu nedenle yinelenen içe aktarmaya neden oluyor.

Bu nedenle, birden fazla çözümü denemeden önce doğru dosyaları içe aktarıp aktarmadığınızı kontrol edin.


Evet! Bu benim sorunuma çok benziyordu. Aynı dosyayı projemde iki kez içe aktartım. Bunun yerine, bir "fileA.h" dosyasını "fileB.h" ye aktardım, ancak daha sonra "fileA.h" ve "fileB.h" yi "fileC.h" ye veya bu satırlardaki bir şeye aktardım ... Yani uygulama çöküyor çünkü hangisinin kullanılacağını bilmiyor. Başkalarına dosya aktarımlarını iki kez kontrol etmeleri için bir hatırlatma yapmak için kesinlikle iyi bir yer!
Jake Dobson

6

Yukarıda birçok çözümden bahsedilmiştir. Benim için kimse çalışmadı (ama lütfen önce yukarıda deneyin).

Proje'yi seçin -> Hedef Seç -> Bağlantılı Çerçeve ve Kitaplıklar -> Tüm bölme kitaplıklarını ekle. (gömülü ikili dosyalarda mevcutlarsa kaldırın)

Şimdi bunları xcode'un sol dosya gezginindeki Çerçeve Klasöründen kaldırın.

Bu benim sorunumu çözdü.


4

Proje-> Build Phase-> Link Binary with libraries'i seçin ve tüm pod kitaplıklarını ekleyin.


3

Bağımlılıklar için Carthage kullanırken aynı sorunu yaşadım.

Sadece Proje Seç -> Yapı Ayarları -> Bit Kodunu Etkinleştir'i Ara -> Evet seçiliyse, Hayır'ı seçin.

Bu benim için bu sorunu çözdü.


2

Aynı problemim vardı.

Nedeni, aynı global değişkeni 2 dosyada beyan etmemdi . Yani 2 yinelenen sembol söyleyerek aynı hatayı gösteriyordu .

Çözüm, bu değişkenleri kaldırmaktı.


1
neden sadece birini değil de ikisini de kaldırdınız?
Jake Dobson

2

Flurry çerçevesi ile bu sorunu yaşayanlar için. Sorunumu çözen şey buydu. Benim için sorun, aşağıdaki dosyaları içe aktardığım ancak onları hiç kullanmadım. "libFlurryTVOS_9.2.3" "libFlurryWatch_9.2.3"

Yani tek yapmam gereken proje hedef ayarlarına gidip bu 2 dosyayı "Bağlantılı çerçeve ve kitaplıklar" bölümünden kaldırmaktı ve sorun çözüldü.


2

Benim durumumda hatanın nedeni iki kez bağlanan kitaplıktır.

Kullandığım react-nativeotomatik kullanılarak bağlandı yüzden react-native linkxcode elle ve.


2

Find Implicit DependenciesOnay kutusunun işaretlendiğinden emin olun .

(Ürün -> Şema -> Şemayı Düzenle -> Oluştur -> Örtülü Bağımlılıkları Bul)


2

Sparkle çerçevesini CocoaPods ile test ediyordum.

Ne yazık ki, pod 'Sparkle', '~> 1.21'PodFile'ı yanlış yere koydum . Testin altına koydum (birim testleri için).

PodFile'da doğru yere yerleştirildikten sonra her şey yolunda.


1

Yapmam gerekiyordu import Foundation!

Kitura'yı Swift sunucu tarafı için kullanıyordum ve bunu unutup duruyordum!


Ha. Evet, bir şey yapmadan önce her zaman en azından Foundation'ı ithal etmeniz gerekecek! Genellikle Foundation yerine UIKit'i içe aktarırım çünkü neredeyse her zaman UIKit'in özelliklerini kullanmam gerekecek ve UIKit her şeyi sizin için Foundation'dan devralmıştır. Objc ile içe aktarma oldukça zor olabilir, ancak Swift kullanıyormuşsunuz gibi görünüyor?
Jake Dobson

Evet Swift kullanıyordum, eldeki dosya herhangi bir derleyici sorunu göstermiyordu, ancak yalnızca dosyayı çalıştırırken bu sorunla karşılaştım!
Honey

1
Evet, çalışma zamanına kadar bunu gerçekten kontrol ettiğini sanmıyorum, yanılıyor olabilirim. Ancak, siz Foundation'dan bir şeye erişmeye çalışana, içe aktarmayı bulamadan ve işleme devam edemeden - kilitlenene kadar bir sorun olmayacak gibi görünüyor!
Jake Dobson

1

İşte benim sorunum ve çözümüm:

Kaynak ağacını (Sürüm denetleyicisi) kullanarak kaynak koddan iki dosyayı kaldırdım. Kaldırdığım iki sınıfı içeren farkı uyguladıktan sonra, Xcode onu otomatik olarak eklemedi. Bu yüzden bağlayıcı hatası aldım.

Grup adına sağ tıklayıp "Dosyaları şuraya ekle" yi seçerek dosyaları manuel olarak ekledim. Şimdi hatam çözüldü.

Herhangi biri sınıf dosyasıyla ilgili bağlayıcı hatasıyla karşılaştıysa, manuel olarak eklemeyi deneyin.


1
Kesinlikle ipucu vermeye çalıştıkları bir dosya sorunu gibi görünüyor ... Başka yerlerdeki dosyalar birbirinden bilgi almıyor gibi görünüyor bu sayfada yaygın olarak bulunur. Cevabın için teşekkürler. Yolun aşağısında birine yardımcı olacağını umuyorum!
Jake Dobson

1

Kendi cihazımı kurup çalıştırdığımda bu problemi yaşamadım. Sadece simülatörlerde bu problem vardı. Sadece bilgisayarımı yeniden başlattım ve çalıştırdım. İşe yaradı.


1

Benim durumumda Target, bu Podfileyüzden benim için aynı Hatayı oluşturmamdaki adı değiştirdim .

Çözüm

Sadece Ve temizle ve tekrar Çalıştır'a tıklayarak project-> Build Phase->Link Binary with librarieseskiyi kaldırın . Benim işim.FrameWorksminus button(-)

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

İstenmeyenleri Kaldır .framework.


1

Diğer cevaplar benim için işe yaramadı, bu yüzden burada başka birine yardımcı olabileceği ihtimaline karşı çözümümü paylaşıyorum:

Sorunum, XCode-Project'imin Podfile'ını yanlış platform için yapılandırıyor olmamdı. Podfile'ımın başındaki "platform: ios" u "platform: macos" olarak değiştirmek, hatadan kurtulmam için çalıştı.


0

Ben de aynı sorunu yaşadım. Herhangi bir github projesini kontrol ediyorsanız, git klonu kullanmak yerine git lfs klonunu kullanın, çünkü bazen bazı büyük dosyalar yalnızca git kullanılarak düzgün şekilde klonlanamaz. Ayrıca, bit kodunuzun devre dışı bırakıldığından emin olun.


iyi not..ama genellikle konsol, bazı dosyaların aktarılamayacak kadar büyük olduğunu size bildirir?
Jake Dobson

0

Benim için, mücevher kilit dosyası, benim kurduğumdan daha eski bir cocoapod sürümü belirtiyordu. Bunun bundle exec pod installyerine yeniden dallanmak ve koşmak zorunda kaldımpod install


0

Görünüşe göre sorun çoğumuz için farklı ve hata mesajında ​​iyi bilgiler var. Benim durumumda, Dağıtım Hedefi hat 10.13tarafından belirlendi export MACOSX_DEPLOYMENT_TARGET=10.13, ancak koşuyordum 10.14. Bu nedenle 10.14, ITLibrary ile ilgili sembollerin tekrar kullanılabilir olması için Dağıtım Hedefimi Genel> Dağıtım Bilgileri olarak değiştirmem gerekti.

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)

0

Benim durumumda aynı projeden birden fazla ürün üretiyordum. Ürünlerden biri için main.mdosya, aynı proje altındaki başka bir klasörden bir başlık dosyasını içe aktarmıştır. Ancak bu dosya, "Derleme Aşaması" altındaki "Uyumlu Kaynaklar" a dahil edilmedi. Bu bir bağlayıcı hatasına neden oldu.

Başarıyla oluşturulabilen bir ürün için "Derleme Aşamaları" ayarlarını dikkatlice karşılaştırdıktan sonra .m, başlık dosyasının "Derlenmiş Kaynak" listesine dahil edilmesi gerektiğini fark ettim . Bu dosyayı ekledikten sonra sorunum çözüldü. Netlik için bir resim eklemek. Vurgulanan dosyanın eklenmesi gerekiyordu.

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


-1

Ionic 1 projesini oluştururken aynı sorunları yaşadım.

CDVLogger.h & CDVLogger.m dosyasını sildikten sonra sorunu çözebildim


ilk etapta bu dosyalara hiç ihtiyacın yok gibi görünüyor? Bu ve diğer dosyalardaki dosyaları da çağırıyor olmalı, projenin kafasını karıştırıyor ve çalışmasını engelliyor olmalı.
Jake Dobson

-4

Tamam, bugün aynı sorunu yaşadım ve bu konuya rastladığımda Google'da araştırmaya başladım. Cevap aklıma geldiğinde soruyu okumayı bitirmedim: Boş bir kurucuya sahip bir sınıf ilan ettim

class MyClass{
    MyClass();

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

Sonra düşündüm (burada kelime seçimi ile doğru olup olmadığımdan emin değilim, ama kimin umurunda) küme parantezi ( {}) ile sınıfımın kurucusunu neden sonlandırmıyorum ? Ben de yaptım:

class MyClass{
    MyClass(){}

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

Sorun ortadan kalktı, kodum mükemmel çalışmaya başladı.

Biliyorum, iyi uygulama sorunu araştırmak ve gerçek nedeni bulmaktır, ancak bu benim için çalıştı.


Bunun bu konu için yararlı olduğunu düşünmüyorum ... Hata, aynı şeyi ayrı dosyalara aktarmak gibi bir dosya sorununu çözmeye çalışıyor gibi görünüyor. Bu hatayı almanız garip buluyorum çünkü bu Objective-C'ye özgü bir hata ...
Jake Dobson

Bu hatayı C ++ 'da da aldım. Sizin durumunuzdaki bağlayıcı hatası, muhtemelen bağlayıcının kurucunuzun kodunu bulamamasıydı. Yeniden adlandırdığım bir işlevde benzer bir hata yaşadım, ancak Xcode 10 bağlayıcı günlüğünü kendi başına açmayacağı için ve sağ tıklayıp "günlükte göster" yapabileceğinizi bilmiyordum, birkaç kez şaşırdım Hatayı bulmaya çalışan dakika.
Matt Parkins
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.