Saya sekarang memiliki pertanyaan yang sama dengan judul di atas tetapi belum menemukan jawaban yang tepat. Saya mendapat kesalahan:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
/Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Bantuan apa pun dihargai.
Akhirnya saya mencari tahu alasan kesalahan ini karena saya menambahkan -ObjC
ke Other Linker Flags
. Setelah menghapus nilai ini maka saya dapat membangun proyek saya dengan sukses, tetapi saya tidak tahu mengapa. Adakah yang bisa menjelaskan ini?
ios
objective-c
xcode5
lee
sumber
sumber
#include
akan melakukan#import
sesuatu (kemungkinan MoboSDK, apa pun itu) lebih dari sekali.GoogleConversionTrackingSDK-iOS-3.0
ke proyek saya. Sebelum itu, itu berfungsi ok. Saya juga mencoba untuk menghapusnya, tetapi kesalahan tetap terjadi.Jawaban:
Berarti Anda telah memuat fungsi yang sama dua kali. Saat masalah hilang setelah dihapus
-ObjC
dariOther Linker Flags,
ini berarti bahwa opsi ini menghasilkan fungsi yang memuat dua kali:dari T&J Teknis
https://developer.apple.com/library/content/qa/qa1490/_index.html
sumber
-ObjC
bendera. Jadi saya harus menyimpan bendera ini di pengaturan proyek saya. Jadi bisakah Anda menyarankan solusi lain?Bagi saya, mengubah 'Tidak Blok Umum' dari Ya menjadi Tidak (di bawah Target-> Bangun Pengaturan-> Apple LLVM - Pembuatan Kode) memperbaiki masalah.
sumber
NO
? Apa alasan di balik ini?Bodoh, tetapi pastikan Anda tidak pernah
#import
mengedit.m
file karena kesalahan di suatu tempatsumber
Dalam kasus saya, saya baru saja membuat file header untuk mendefinisikan string konstan seperti ini:
Saya memecahkan skenario ini dengan menggunakan
static
:sumber
extern
bukanstatic
:extern NSString * const kNotificationName;
. Yang aneh, karena Anda biasanya tidak menambahkan awalan seperti itu, dan itu berfungsi dengan baik ..AppStrings.h
adalah konstanta, namun itu akan menyebabkan havok jika Anda menginginkan variabel global yang dapat berubah karena setiap file sumber yang menyertakan file header akan memiliki salinan variabelnya sendiri. Ini solusi yang buruk.Saya menemukan jawaban yang diterima menyentuh masalah tetapi tidak membantu saya menyelesaikannya, mudah-mudahan jawaban ini akan membantu dengan masalah yang sangat membuat frustrasi ini.
"Berarti kamu telah memuat fungsi yang sama dua kali. Ketika masalah ini hilang setelah menghapus -ObjC dari Other Linker Flags, ini berarti bahwa hasil opsi ini yang berfungsi memuat dua kali:"
Dalam istilah awam ini berarti kita memiliki dua file dalam proyek kita dengan nama yang persis sama. Mungkin Anda menggabungkan satu proyek ke proyek lain? Lihat kesalahan di atas "simbol duplikat" kesalahan untuk melihat folder mana yang diduplikasi, dalam kasus saya itu adalah BLoginViewController.
Misalnya, pada gambar di bawah ini Anda dapat melihat saya memiliki dua BImageViewControllers, bagi saya inilah yang menyebabkan masalah.
Segera setelah saya menghapus satu maka masalah menghilang :)
sumber
Saya memiliki masalah yang sama. Dalam Xcode 7.2 di jalur Target Proyek> Pengaturan Bangun> Tanpa Blok Umum, saya ubah ke TIDAK.
sumber
Terjadi juga ketika Anda mendeklarasikan variabel const dengan nama yang sama di kelas yang berbeda:
dalam file Message.m
dalam file Chat.m
sumber
Ini terjadi pada saya ketika saya menerima pop-up "pengaturan yang direkomendasikan" pada proyek yang saya kembangkan dua tahun lalu di Objective-C.
Masalahnya adalah ketika Anda menerima pembaruan "pengaturan yang direkomendasikan", Xcode secara otomatis mengubah atau menambahkan beberapa pengaturan build, termasuk
GCC_NO_COMMON_BLOCKS = YES;
.Ini membuat pembangunan gagal dengan
duplicate symbol
kesalahan dalam proyek saya yang diperbarui. Jadi saya mengubahNo Common Block
keNO
dalam pengaturan build saya dan kesalahan hilang.sumber
Cara tercepat untuk menemukan duplikat adalah:
sumber
Langkah-langkah berikut memecahkan masalah bagi saya.
sumber
Hapus -ObjC dari Bendera Penghubung Lain atau Harap periksa apakah Anda mengimpor file .m alih-alih .h secara tidak sengaja.
sumber
.m"
saya perhatikan bahwa saya memang mengimpor file .m bukannya .h dan setelah memperbaikinya itu berhasil!Talk is cheap, show me the code!
Bersulang!Situasi saya dengan beberapa proyek lawas yang dibuka di Xcode 7.3 adalah:
diikuti dengan daftar dua file yang tidak terkait.o, maka ini diulang beberapa kali, lalu akhirnya:
Apa yang menyelesaikannya bagi saya adalah mengubah deklarasi enum dari:
untuk ini:
Jika seseorang memiliki penjelasan untuk ini, tolong beri tahu saya.
sumber
Mendefinisikan variabel yang sama di bawah implementasi @ di lebih dari satu kelas juga dapat menyebabkan masalah ini.
sumber
Dalam kasus saya, ada dua file dengan nama yang sama di lokasi
sumber
Ini berhasil untuk saya
sumber
Saya mengalami masalah ini setelah menginstal Cocoapods. Sekarang terjadi setiap kali saya memperbarui beberapa pod. Solusi yang saya temukan:
Pergi ke terminal:
Juga, periksa item "Selalu Embed Swift Libraries" di Pengaturan Bangun Anda. Itu harus "pudar" menunjukkan itu menggunakan konfigurasi default. Jika diset ke manual YA, tekan hapus di atasnya untuk mengembalikannya ke konfigurasi default. Ini menghentikan perilaku.
sumber
Bagi saya selama Xcode8 merekomendasikan pembaruan pengaturan proyek "No Blok Umum" ke YA yang menyebabkan masalah ini.
sumber
Hari ini, saya mendapat kesalahan yang sama. Kata kunci kesalahannya adalah
duplicate
. Saya memperbaikinya dengan:sumber
Pastikan Anda belum mengimpor file .m secara tidak sengaja, Anda mungkin ingin menghapus data turunan Anda di Jendela Proyek dan kemudian membangun dan menjalankannya lagi.
sumber
Bagi siapa pun yang memiliki masalah ini, saya tidak melihat resolusi saya dalam jawaban ini.
Setelah mengalami konflik penggabungan .pbxproj yang ditangani secara manual (meskipun buruk), ada referensi rangkap untuk file kelas individu di .pbxproj. Menghapus yang dari Project> Build Phases> Compile Sources memperbaiki semuanya untuk saya.
Semoga ini bisa membantu seseorang di telepon.
sumber
ld: X duplicate symbols for architecture x86_64
. Memperbaikinya dengan menghapus file sumber yang disebutkan dalam pesan kesalahan dan menambahkannya kembali ke proyek.Mirip dengan Juice007, saya telah mendeklarasikan dan menginisialisasi variabel tipe C dalam dua file .m yang berbeda (yang tidak diimpor!)
Namun, metode ini menyatakan dan menginisialisasi variabel, bahkan dalam .m, bahkan dalam @ implementation memberikannya lingkup global. Pilihan Anda adalah:
Deklarasikan sebagai statis, untuk membatasi ruang lingkup ke kelas:
Hapus inisialisasi (yang akan membuat dua kelas berbagi global var):
Nyatakan sebagai properti:
Deklarasikan sebagai iVar yang tepat di @interface
sumber
Dalam kasus saya, saya memiliki dua
main()
metode yang ditentukan dalam proyek saya dan menghapus satu memecahkan masalah.sumber
Baru-baru ini mengalami sakit kepala mencari sumber kesalahan. Saya heran, ketika saya tahu bahwa aplikasi saya tidak ingin dikompilasi, hanya karena saya mengikuti cuplikan kode di kelas yang berbeda:
Semoga itu bisa membantu seseorang.
sumber
Saya harap ini pasti akan membantu Anda
Saya mendapat kesalahan yang sama 3 simbol duplikat untuk arsitektur x86_64
dalam kasus saya, saya telah menyalin kode dari file lain dari proyek yang sama misalnya. kode file Am ke Bm dan setelah kompilasi saya mendapat kesalahan seperti yang disebutkan. dan saya telah memecahkan kesalahan dengan mengubah nama Variabel global.
kesalahan ini datang dalam kasus saya karena menyatakan sama untuk variabel global di kedua file.
sumber
Saya mendapat kesalahan yang sama ketika saya menambahkan repositori pod
untuk kode sumber yang sudah ditambahkan (SWRevealViewController) dari gitHub. Jadi, kesalahan akan diperbaiki dengan menghapus kode sumber atau repositori pod.
Kasus # 2:
Kedua kalinya, kesalahan ini muncul ketika saya menyatakan konstan dalam file .h .
sumber
Jawaban di atas tidak berhasil untuk saya. Inilah cara saya mengatasinya:
1) di finder, hapus seluruh folder Pods dan file Podfile.lock 2) tutup proyek xcode 3) jalankan install pod di terminal 4) buka proyek xcode, jalankan perintah clean build
Bekerja untuk saya setelah itu.
sumber
Masalah yang sama terjadi pada saya, ketika saya mengintegrasikan proyek lob di dalam proyek saya.
Sebenarnya proyek lob juga memiliki file AFNetworking, Jadi saya menghapus file .m dari proyek lob.
Sebenarnya file .m bertentangan dengan file POd / AFNetworking / .m proyek saya
sumber
Dalam Xcode 6.3.2. Saya telah memeriksa semua kemungkinan seperti di bawah ini
1: Saya belum mengimpor file .m di proyek saya.
2: Dihapus
-ObjC
dari bendera penghubung lainnya .3: Menghapus semua Data yang saya dapatkan .
masih saya mendapatkan kesalahan yang sama. Saya telah menghapus kesalahan ini dengan menghapus segala deklarasi variabel dari
.pch
file . dalam kasus saya, saya telah mendeklarasikanAppDelegate
objek dalam.pch
file. akhirnya saya menemukan alasan yang menyebabkan kesalahan. jadi saya menghapus deklarasi variabel apa pun dari file .pch dan pesona pekerjaan proyek saya.sumber
Kesalahan konyol lain yang akan menyebabkan kesalahan ini adalah pengulangan file. Saya tidak sengaja menyalin beberapa file dua kali. Pertama saya pergi ke Target -> Bangun Fase -> Kompilasi sumber. Di sana saya perhatikan beberapa file pada daftar itu dua kali dan lokasinya.
sumber
Saya juga memiliki kesalahan ini hari ini. Itu karena saya mendefinisikan nilai const dalam sebuah
.m
file. Tapi saya mendefinisikan.m
file lain yang juga termasuk nilai const ini. Itu artinya ia memiliki dua nilai const yang sama. Jadi kesalahan ini muncul. Dan solusi saya adalah menambahkan kata kunci "static
" sebelum nilai const.seperti:Dan kemudian saya membangun proyek itu tidak akan melaporkan kesalahan ini.
sumber