Saat mencoba mengompilasi dengan Xcode, saya mendapatkan kesalahan berikut:
**Ld /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher normal i386
cd /Users/doronkatz/Sites/xCode/iKosher
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Xcode4/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Xcode4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk -L/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -L/Users/doronkatz/Sites/xCode/iKosher -F/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -filelist /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Intermediates/iKosher.build/Debug-iphonesimulator/iKosher.build/Objects-normal/i386/iKosher.LinkFileList -mmacosx-version-min=10.6 -all_load -ObjC -Xlinker -objc_abi_version -Xlinker 2 -lz -framework Security -framework CFNetwork -framework CoreData -framework Foundation -framework UIKit -framework CoreGraphics -framework QuartzCore -o /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher
Undefined symbols for architecture i386:
"_UTTypeCreatePreferredIdentifierForTag", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_UTTypeCopyPreferredTagWithClass", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_kUTTagClassMIMEType", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_kUTTagClassFilenameExtension", referenced from:
+[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
"_SCNetworkReachabilitySetCallback", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
-[Reachability stopNotifier] in Reachability.o
"_SCNetworkReachabilityCreateWithName", referenced from:
+[Reachability reachabilityWithHostName:] in Reachability.o
"_SCNetworkReachabilityCreateWithAddress", referenced from:
+[Reachability reachabilityWithAddress:] in Reachability.o
"_SCNetworkReachabilityGetFlags", referenced from:
-[Reachability currentReachabilityStatus] in Reachability.o
-[Reachability isReachable] in Reachability.o
-[Reachability isConnectionRequired] in Reachability.o
-[Reachability isConnectionOnDemand] in Reachability.o
-[Reachability isInterventionRequired] in Reachability.o
-[Reachability isReachableViaWWAN] in Reachability.o
-[Reachability isReachableViaWiFi] in Reachability.o
...
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status**
Tidak yakin apa artinya.
sumber
Saya menyelesaikannya menggunakan metode berikut (untuk XCode 4):
1) Pilih proyek di jendela navigasi proyek yang akan menampilkan ringkasan proyek di sebelah kanan
2) Pilih fase pembuatan tab ke-4
3) Pilih Link binary with library option
4) Tambahkan kerangka kerja yang Anda peroleh
5) Pindahkan kerangka dari folder utama ke folder kerangka kerja
6) Bangun lagi dan kesalahan hilang.
sumber
Masalahnya adalah bahwa keanggotaan target untuk file yang ditambahkan hilang ke target aplikasi. Jadi pilih file dan tambahkan tanda centang ke kotak keanggotaan target
Misalnya jika kesalahan ditampilkan dalam definisi metode yang sama
sumber
Berpikir untuk menambahkan solusi saya untuk ini, setelah menghabiskan beberapa jam pada kesalahan yang sama :(
Orang-orang di atas benar bahwa hal pertama yang harus Anda periksa adalah apakah Anda melewatkan menambahkan kerangka kerja apa pun, lihat langkah-langkah yang disediakan oleh Pruthvid di atas.
Masalah saya, ternyata, adalah kelas kompilasi yang hilang setelah saya menghapusnya, dan kemudian menambahkannya kembali.
Periksa "Sumber Kompilasi" Anda seperti yang ditunjukkan untuk kelas kesalahan yang dilaporkan. Tambahkan kelas yang hilang yang Anda buat.
sumber
Pastikan framework yang hilang benar-benar terdaftar di bawah "Target / Build Phases / Link Binary With Libraries" jika tidak hanya menambahkannya. Seperti yang disebutkan sebelumnya, ini biasanya menunjukkan kerangka yang hilang.
Dalam proyek saya ada dua kerangka identik yang terdaftar, ketika saya menghapus salah satunya saya mengalami kesalahan ini, karena itu juga menghapusnya dari daftar "Tautan Biner Dengan Perpustakaan". Saya menambahkan kembali dan masalahnya hilang (dan saya masih memiliki dua kerangka kerja yang terdaftar)
sumber
Saya memperbaiki kesalahan serupa pada proyek saya dengan mengubah Pengaturan Build> Arsitektur untuk SEMUA target saya.
Masalahnya: Ketika saya memutakhirkan dari Xcode 4.4 ke Xcode 4.5, proyek saya masih terkompilasi dengan baik di simulator tetapi tidak dapat dikompilasi pada perangkat. Pada perangkat, ia menampilkan kesalahan "simbol tidak ditemukan untuk armv7 arsitektur", bersama dengan "Kesalahan Apple Mach-O Linker" yang menyesatkan dan "clang: error: perintah linker gagal dengan kode keluar 1 (gunakan -v untuk melihat permintaan ). "
Penyebabnya (dalam kasus saya): Proyek saya memiliki beberapa target, dan meskipun Build Settings> Architectures untuk target utama ditetapkan untuk menyertakan arsitektur armv7s, target utama bergantung pada target lain (tercantum di bawah Build Phases> Dependencies), dan Saya tidak berpikir untuk mengatur ulang Pengaturan Build> Arsitektur untuk target lain itu, dan saya harus mengubahnya untuk menyertakan armv7s. Saya kira simulator dan perangkat berjalan pada arsitektur yang berbeda, dan itulah mengapa simulator baik-baik saja sedangkan perangkat tidak.
sumber
Apakah proyek Anda bergantung pada proyek lain, dan apakah itu target dalam proyek itu ditetapkan untuk menjadi ketergantungan langsung dari target utama Anda? Jika ini kasusnya dan dependensi tidak disiapkan, target dependen mungkin tidak dibuat untuk semua konfigurasi (yaitu simulator)
Hanya tebakan liar.
sumber
Situasi lain yang dapat menyebabkan masalah ini adalah jika kode Anda memanggil ke C ++, atau dipanggil dengan kode C ++. Saya mengalami masalah dengan fungsi utilitas file .c saya yang muncul sebagai "simbol tidak ditemukan" saat dipanggil dari Obj-C. Perbaikannya adalah dengan mengubah jenis file: di Xcode 4, gunakan panel info yang diperluas untuk mengatur jenis file ke "Objective-C ++ Source"; di Xcode 3, gunakan "Get Info" untuk mengubah jenis file menjadi "source.cpp.objcpp".
sumber
Dalam kasus saya, tidak ada solusi yang diposting yang berfungsi. Saya harus menghapus proyek dan melakukan pembayaran baru dari server SVN . Beruntung saya proyek ini di-host dalam sistem kontrol versi. Tidak tahu apa yang akan saya lakukan sebaliknya.
sumber
Dalam proyek C ++ menggunakan kelas templatized yang ditentukan , ketika menerima kesalahan yang sama, saya memilih file .cpp dengan kelas templatized yang ditentukan di Project Navigator, lalu Hapus> Hapus Referensi. Juga file .h terkait, sementara masih direferensikan dalam proyek, perlu memiliki pernyataan #include ke .cpp sebagai berikut:
Jika Anda ingin melihat, contoh proyek sederhana ada di github :
Ini adalah sedikit tipuan tipuan dan saya tidak ingat sumber asli dari solusi ini.
sumber
Jika kesalahan ini muncul tiba-tiba, itu berarti proyek kehilangan beberapa kerangka kerja. Perpustakaan dan proyek dependen dapat memerlukan kerangka kerja, jadi jika Anda baru saja menambahkan satu kerangka kerja maka itu dapat menyebabkan kesalahan ini.
Untuk menambahkan kerangka kerja, klik kanan pada nama proyek di tampilan proyek, pilih Tambah, lalu pilih Kerangka yang ada dari daftar. Kemudian temukan kerangka kerja dengan simbol yang Anda lewatkan.
Hal lainnya adalah jika Anda menambahkan kelas apa pun dalam sumber daya yang dikompilasi dan menghapus kelas itu dari proyek maka kesalahan akan muncul. Hal terbaik yang harus dilakukan adalah menghapus kelas dari sumber kompilasi (Build settings -> compile sources) yang telah dihapus dari proyek.
Dalam kasus saya, saya telah menambahkan kelas admob dalam proyek dan menyusun proyek. Dalam kasus selanjutnya saya tidak ingin memasukkan admobs dalam proyek saya jadi saya menghapus referensi kelas admob dari proyek saya. Ketika kesalahan ini terjadi, saya menghapus kelas .m admob saya dari sumber daya kompilasi memecahkan masalah ini.
sumber
Ini terjadi pada saya saat mencoba menyalin pustaka demo PSPDFKIT ke dalam proyek saya. Saya mengikuti semua instruksi di situs + semua saran di halaman ini .. untuk beberapa alasan terus memberikan kesalahan di atas, masalahnya adalah jika saya memahami pesan dalam metode kesalahan .. itu hanya muncul di biner ( jelas saya tidak memiliki akses ke kode sumber b / c saya harus membayarnya).
Saya melihat ini di halaman instruksi:
Jadi saya pergi ke isi file konfigurasi itu dan menemukan ini:
Kemudian saya pergi ke proyek sampel yang disediakan oleh penulis perpustakaan tersebut .. dan melihat bahwa bendera sebelumnya di mana disalin kata demi kata ke bendera penaut lain dalam pengaturan build saya .. namun dalam proyek saya .. tidak! .. Jadi saya hanya menyalin dan menempelkannya ke dalam pengaturan pembangunan proyek saya, bendera penaut lain dan semuanya bekerja!
take away point: jika Anda mengandalkan beberapa file .xcconfig pada pengaturan Anda, periksa kembali dengan sumber kode sampel atau sesuatu dan pastikan bahwa itu benar-benar telah diterapkan .. itu tidak diterapkan dengan benar dalam kasus saya
sumber
Alasan lain hal ini bisa terjadi adalah ketika Anda MENINGKATKAN SDK.
Jika Anda hanya menghapus grup, lalu menyeret dan melepaskan folder baru ke proyek, "Library Search Path" akan memiliki kedua SDK tersebut. Untuk mengatasinya, cukup hapus jalur SDK lama.
sumber
Saya telah menggunakan CLGeocoder tanpa menambahkan Core.Location Framework. Pada dasarnya kesalahan ini bisa berarti banyak hal. Saya harap ini membantu orang lain.
sumber
Saya pernah bingung dengan yang ini sebelumnya, hanya untuk menyadari bahwa saya menambahkan @interface hanya data dan lupa menambahkan blok @implementation yang kosong.
sumber
Menemukan masalah ini di Xcode 11, perbaikan telah mengubah Target Penerapan Minimum dari 10.0 menjadi 11.0, semoga ini membantu seseorang :)
sumber