Ketika saya mencoba menjalankan Proyek Xcode saya, gagal dengan kesalahan yang menyatakan bahwa saya memiliki simbol duplikat. Saya mencari online di mana menemukan duplikat ini tetapi tidak berhasil:
Ada ide bagaimana cara memperbaikinya?
ios
objective-c
xcode
linker-errors
picciano.dll
sumber
sumber
Jawaban:
Dari error tersebut, terlihat bahwa FacebookSDK.framework sudah menyertakan class Bolts.framework. Coba hapus Bolts.framework tambahan dari proyek.
sumber
Bagi saya itu membantu untuk mengalihkan pengaturan compiler "No Common Blocks" ke NO: Sepertinya masuk akal, pengaturan dijelaskan di sini: Untuk apa GCC_NO_COMMON_BLOCKS digunakan?
sumber
Menggunakan Xcode 8, opsi "Perbarui proyek ke setelan yang disarankan" mengaktifkan 'Tidak Ada Pemblokiran Umum' untuk proyek saya.
Mematikannya kembali ke OFF memperbaiki semuanya.
sumber
Bagi saya, saya mengimpor file sebagai .m bukan .h karena kesalahan
sumber
Saya telah mengacaukan pod saya saat mendowngrade sebuah pod dan saya telah berhasil menyelesaikan masalah dengan simbol duplikat untuk arm64 arsitektur dengan menghapus pod dan menginstalnya lagi dengan:
sumber
Solusi lain adalah:
Kemudian Anda akan melihat 1 atau 2 file di hasil pencarian.
Hapus salah satunya dan kompilasi lagi . Ini harus dikompilasi ulang sekarang karena hanya ada satu file yang tersisa dan tidak ada lagi konflik untuk pembuatan.
Jika itu tidak berhasil, file mungkin memiliki kesalahan di dalamnya dan Anda harus menghapus semuanya dan kemudian mengkompilasi ulang. Ini harus bekerja lagi.
sumber
Saat meningkatkan ke Xcode 8, saya mendapat pesan untuk meningkatkan ke pengaturan yang disarankan. Saya menerima dan semuanya diperbarui. Saya mulai mendapatkan masalah waktu kompilasi:
Simbol duplikat untuk XXXX Simbol duplikat untuk XXXX Simbol duplikat untuk XXXX
Sebanyak 143 kesalahan. Pergi ke Target-> Build settings -> No Common Blocks -> Set to NO. Ini menyelesaikan masalah. Masalahnya adalah bahwa proyek terintegrasi memiliki blok kode yang sama dan karenanya tidak dapat mengkompilasinya. Penjelasan dapat ditemukan di sini .
sumber
Kesalahan ini terjadi saat Linker mencoba menautkan file obj. Beberapa alasan yang dapat saya pikirkan untuk kesalahan ini adalah:
Fungsi / Kelas duplikat didefinisikan di dua tempat / file berbeda dalam proyek dan hanya satu dari mereka yang seharusnya dikompilasi untuk setiap variasi perintah build. Tetapi entah bagaimana kedua file itu dikompilasi dalam proyek Anda. Jadi, Anda perlu memeriksa kondisi if-else atau dependensi lain yang menambahkan file src ke daftar file yang perlu dikompilasi dan menghapus file yang tidak diperlukan untuk perintah build khusus Anda.
Fungsi / Kelas duplikat didefinisikan secara tidak sengaja di dua tempat / file yang berbeda dalam proyek. Hapus definisi yang salah.
Bersihkan direktori OBJ Anda sebelum Anda membangun lagi, mungkin ada beberapa file obj lama di sana dari build Anda sebelumnya yang mungkin menyebabkan konflik ini.
PS saya bukan ahli, tetapi ini adalah cara saya memecahkan masalah ini ketika saya menghadapinya. :)
sumber
Jika Anda pindah ke Xcode 7 atau 8 dan membuka proyek yang sangat lama, saya mengalami masalah ini:
di
SomeConstFile.h
di
SomeConstFile.m
Versi sebelumnya dari kompilator mengasumsikan bahwa definisi di file header adalah eksternal dan termasuk SomeConstFile.h di semua tempat itu baik-baik saja.
Sekarang Anda perlu secara eksplisit mendeklarasikan consts ini sebagai extern:
di
SomeConstFile.h
sumber
Di bawah Patch bekerja untuk saya .. :)
Menyetelnya kembali ke TIDAK memecahkan masalah!
sumber
Nah, beberapa kali ketika menggunakan SDK seperti FB atau Perpustakaan seperti Vuforia atau GoogleAnalytics, menambahkan proyek sampel dapat menyebabkan masalah bahwa mereka sudah termasuk Kerangka dan sejenisnya, jadi Anda harus memastikan tidak mengulangi simbol yang Anda tambahkan secara manual saat sudah termasuk dalam sampel
sumber
Bagi saya, masalahnya adalah gaya pembuatan const, yang berfungsi dengan baik hingga iOS8 ini .. Saya memiliki beberapa baris sebagai:
di file .h saya. Enam baris seperti menghasilkan 636 file linker setelah blok umum disetel ke NO. (14k + jika YA). Memindahkan baris ke .m setelah menghapus .h dari deklarasi nilai dan kompilasi sudah selesai.
Semoga ini bisa membantu orang lain!
sumber
Dalam kasus saya, alasannya terlalu bodoh:
Saya memiliki file Constant.h di mana makro saya telah ditentukan. Saya berpikir untuk melakukan NSString di sana. dan melakukan ini:
ini menyebabkan masalah Simbol Duplikat untuk Arsitektur arm64 dan perintah Linker gagal dengan kode keluar 1. Menghapus baris const NSString berhasil untuk saya.
sumber
periksa file yang Anda sertakan, saya mengalami masalah ini karena saya tidak sengaja # mengimpor "namafile.m" alih-alih "namafile.h", koreksi otomatis (tab) meletakkan "m" bukan "h".
sumber
Dari error tersebut, akan muncul Classes yang muncul berkali-kali, temukan dan hapus Classes yang akan berfungsi.
Saya membuat file AppDelegate.h dan .m membuat banyak waktu. Jadi kesalahan ini akan terjadi Akhirnya temukan dan hapus kelas yang berfungsi dengan baik untuk saya.
sumber
untuk mengatasi masalah ini masuk ke fase Build dan cari tentang file duplikat seperti (facebookSDK, unityads) dan hapus (ekstensi file.o) lalu buat lagi.
sumber
Bagi saya, saya membuat metode yang disebut
sampleMethod
di ViewController_A dan membuat metode yang sama di ViewController_B juga, Itu menyebabkan saya kesalahan ini, kemudian saya mengubah nama metode di ViewController_B menjadisecondSampleMethod
. Itu memperbaiki kesalahan.Sepertinya fitur yang bagus untuk mengurangi kode dan tidak menduplikasi kode yang sama di banyak tempat.
Saya mencoba mengubah blok Tidak Umum dari Ya ke Tidak kemudian mengaktifkan kemampuan pengujian dari Ya ke Tidak. Itu tidak berhasil. Saya telah memeriksa file duplikat juga dalam fase pembuatan, tetapi tidak ada file duplikat.
sumber
Saya mendapat masalah ini karena saya malas mendefinisikan variabel di .m saya di luar metode, lalu di file .m lain saya mendefinisikan variabel lain dengan nama yang sama di luar metode. Ini menyebabkan masalah duplikat nama variabel global.
sumber
Masalahnya bagi saya adalah saya telah memasukkan kerangka kerja secara manual tetapi juga memasukkan kerangka kerja yang sama di CocoaPods tanpa mengetahui saya melakukannya. Setelah saya menghapus satu atau lainnya, masalahnya hilang
sumber
Lihat Kesalahan simbol duplikat saat menambahkan subkelas NSManagedObject, tautan duplikat
sumber
Saya dapat mengatasi kesalahan ini yang mengatakan "158 simbol duplikat untuk arsitektur armv7, 158 simbol duplikat untuk arsitektur arm64" --- Jika ini juga yang Anda dapatkan, berarti Anda mencoba mengompilasi file yang sedang mengimpor atau mewarisi framework atau library statis yang memiliki referensi ke kode atau file C ++. Cara mudah untuk menangani ini adalah dengan mengubah ekstensi file .m Anda menjadi .mm. Beginilah cara penanganannya jika Anda menggunakan Objective C, meskipun tidak yakin pada Swift.
Juga di setelan build Anda - Anda bisa mengupdate "flag linker lain" ke -lc ++
sumber
Jika seseorang bereksperimen dengan mengerjakan Flutter, jangan coba pod deintegrate, pod init.
Cara saya menyelesaikannya adalah menjalankan flutter clean, flutter run -d [Perangkat iOS]
Semoga bisa membantu seseorang.
sumber
Tlg Ubah pengaturan.
Langkah 1: Pergi ke TARGET -> Build Settings -> No Common Blocks -> No
Langkah 2: Buka TARGET -> Build Settings -> aktifkan testability -> No
sumber