Saya telah mengimpor kerangka kerja untuk mengirim email dari aplikasi di latar belakang yaitu SKPSMTPMessage
Kerangka. Adakah yang bisa menyarankan mengapa kesalahan di bawah ini ditampilkan
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SKPSMTPMessage", referenced from:
objc-class-ref in ConfirmController.o
"_kSKPSMTPPartContentTransferEncodingKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
"_kSKPSMTPPartMessageKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
"_kSKPSMTPPartContentTypeKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Sumber dari mana kerangka kerja diambil: -
Mengunci Fields di MFMailComposeViewController
Perbarui :
Jawab: Cukup seret dan letakkan folder di atas proyek dan klik salin. Itu pilih kotak centang proyek dan kotak centang target juga.
Jawaban:
Anda bisa mendapatkan jenis kesalahan ini jika file .m kelas Anda tidak terdaftar di bawah langkah "Kompilasi Sumber" pada tab "Bangun Fase" dari target Anda. Biasanya Xcode melakukan ini untuk Anda, tetapi kadang-kadang kehilangan alur dan Anda perlu menambahkan file .m secara manual.
Untuk melakukan ini:
TargetSettings -> Build Phases -> Compile Sources -> tambahkan kelas .m Anda -> Build and Run
sumber
-lLibraryName_$(PLATFORM_NAME)d
untuk Debug , dan tambahkan-lLibraryName_$(PLATFORM_NAME)
untuk Rilisbagi saya masalahnya ternyata kerangka kerja yang hilang. Setelah saya menambahkan mereka, itu berhasil.
sumber
Periksa properti yang valid hanya Arsitektur dan Bangun Arsitektur Aktif.
sumber
jika Anda menggunakan cocoapods, pastikan pengaturan build target Anda berisi $ (diwarisi) di bagian flag linker lainnya
sumber
Apakah kerangka kerja Anda dikompilasi untuk armv (x)? Sepertinya saya dikompilasi untuk i386, kode mana yang tidak akan berjalan pada perangkat iOS. Atau kalau tidak, ini dikompilasi untuk armv (x) dan Anda mencoba menjalankannya di simulator, yaitu kode i386. Pastikan, dengan menggunakan pengaturan build Akshay yang ditampilkan di atas, bahwa kerangka kerja Anda dikompilasi dengan benar untuk chip yang akan Anda jalankan.
sumber
Jika Anda mengimpor beberapa proyek lain dalam xcode dan jika proyek saat ini dan impor keduanya memiliki file yang sama di sumber Compiler maka hapus saja file yang sama dalam proyek saat ini di pengaturan "Build phase '. Ini berhasil untuk saya.
sumber
Ya ini terkait dengan apa yang dikatakan allen ... cari TargetMembership di bagian Utilities dari file sumber. ada kotak centang yang mengaitkan file itu ke proyek. Memeriksa ini memecahkan masalah ini untuk saya juga.
sumber
Mungkin juga Anda kehilangan tautan ke Perpustakaan Biner, periksa Bangun Fase di Targes Anda, tambahkan pustaka yang diperlukan, lalu Produk> Produk Bersih> Bangun
Itu juga harus berhasil!
sumber
Saya memiliki masalah ini ketika saya membuka proyek yang sama dua kali, hanya satu proyek yang asli dan yang lainnya diklon dari git url.
'Produk'> 'Bersihkan' menyelesaikan masalah.
sumber
Saya juga menemukan masalah ini dan saya memperbaikinya dengan memeriksa apakah sumber kompilasi dan tautan biner dengan pustaka berisi semua file / pustaka / kerangka kerja yang saya butuhkan.
sumber
Ketika saya mengalami masalah yang sama seperti ini:
Ternyata saya hanya lupa menambahkan framework. Itu QuartzCore.framework tepatnya.
sumber
coba yang terakhir ini:
jadi saya mencoba semua saran di halaman ini .. tidak ada yang berhasil .. Cara masalah saya dimulai adalah dengan mengikuti langkah-langkah dalam ini tutorial yang mengajarkan cara menautkan pustaka statis. Dengan proyek sampel saya instruksi bekerja dengan baik .. tetapi kemudian pada proyek saya yang sebenarnya saya mulai mendapatkan kesalahan di atas.
Jadi apa yang saya lakukan adalah pergi melalui setiap langkah dari tutorial tersebut dan dibangun setelah setiap langkah .. baris yang menyinggung ternyata menjadi yang ini: menambahkan -all_load untuk membangun pengaturan-> flag linker lainnya
ternyata flag ini direkomendasikan pada suatu waktu untuk menautkan kategori ke pustaka statis .. tetapi kemudian ternyata flag ini tidak lagi diperlukan Xcode 4.2+ .. (berlaku juga untuk flag -force_load .. yang juga direkomendasikan di posting lain ) ..
sumber
Ketika saya mengalami masalah yang sama, saya lupa menambahkan "versi pustaka yang dikompilasi (dengan ekstensi .a)". Biasanya kami menambahkan perpustakaan proyek yang diimpor dalam Ketergantungan Target dalam Build Phases, tetapi kami lupa menambahkan "compiled library" di Link Binary dengan Libraries di Build Phases.
sumber
Menambahkan apa yang berhasil untuk saya jika orang lain memiliki masalah yang sama dan berakhir di sini. Saya memiliki proyek yang lebih tua yang pengaturan CLANG_ENABLE_MODULES diatur ke Tidak. Setelah frustrasi selama berjam-jam, saya membandingkannya dengan proyek yang sedang berjalan dan ternyata saya telah mengaktifkan Set Modul ke no di bawah pengaturan build LLVM saya. Mengatur ini ke Ya menyelesaikan masalah saya dan aplikasi dibangun dengan baik.
Pengaturan Proyek -> Pengaturan Bangun -> cari 'Modul' dan Perbarui Aktifkan Modul (C dan Objective-C) ke YES.
sumber
Saya tidak menambahkan "-all_load -lstdc ++" ke Other Linker Flags dalam pengaturan build dan saya dapat meluncurkan sim tanpa kesalahan tetapi saya tidak mendapatkan output log MonkeyTalk ketika diluncurkan dan skrip sebelumnya yang saya tulis yang digunakan untuk menghubungkan sekarang menunjukkan tombol putar telah dinonaktifkan. Output dari MT IDE ditampilkan sebagai "Koneksi diatur ke iOS Simulator", tetapi tidak dapat memilih tombol run / play.
Proyek asli memiliki "ObjC -all_load" di Other Linker Flags dan ketika saya menambahkan "-all_load -lstdc ++" bersamaan dengan itu saya mendapat pesan kesalahan bahwa posting ini adalah tentang. Ketika saya menghapus "ObjC -all_load" dan hanya menambahkan "-all_load -lstdc ++" proyek yang dibangun, tetapi masih tidak ada logout monyet keluar dimasukkan sebagai konfirmasi di konsol
sumber
Mungkin saja Anda menggunakan perpustakaan yang hanya dikompilasi untuk perangkat keras NYATA. Misalnya, jika Anda menggunakan perpustakaan Bluetooth seperti Zephyr HxM Smart, itu mungkin tidak akan dikompilasi pada simulator, dan hanya dimaksudkan untuk berjalan pada perangkat nyata.
sumber
Mengalami masalah serupa dengan iOS 6. Mampu menyelesaikannya dengan menambahkan storekit.framework ke "Link Binary with Libraries" di bagian fase build.
Sekarang, itu berfungsi seperti pesona.
sumber
saya memiliki masalah yang sama dengan 7 kesalahan ketika saya menambahkan PSTCollectionviewcontroller. Satu solusi untuk masalah ini adalah memeriksa "xcode -> build phasa -> compile sources" di sini tambahkan semua file ".m" Anda .. Saya harap Anda ini posting akan membantu pengguna di masa mendatang.
sumber
Di tambang, saya menggunakan Cocoapods untuk proyek Augmented Reality dan apa yang saya temukan adalah ketika Anda mengimplementasikan cocoapods dan membuka .workspace proyek Anda, Anda berakhir dengan target Proyek Xcode dan target Pod yang Anda implementasikan di dalam file yang sama. Apa yang terjadi adalah bahwa beberapa .m sedang digunakan oleh keduanya. Setelah saya menghapus duplikat untuk target Xcode di Build Phases >> Compile Sources, itu bekerja dengan baik.
sumber
Saya menemukan pesan yang SANGAT menyesatkan ini ketika mencoba meningkatkan ke perpustakaan Google Analytics yang baru.
Dalam kasus saya masalahnya adalah DUA SALINAN KONFLIK perpustakaan. Mereka berada di folder yang berbeda tetapi keduanya terdaftar di Jalur Bangun Perpustakaan Aplikasi saya (di bawah Pengaturan Bangun).
Memindahkan semua file perpustakaan yang sudah usang keluar dari folder akhirnya melakukan trik dan membuat pesan kesalahan misterius hilang.
sumber
Periksa bahwa semua sumber daya bundel Anda disalin dalam fase pembuatan.
sumber
Produk => Bersihkan melakukan trik untuk saya
sumber
Perubahan dalam arsitektur aktif bekerja untuk saya, Salah satu lib saya menggunakan i386.
Dalam pengaturan build >> ubah Build Arsitektur Aktif Hanya ke Ya dari TIDAK
Ini berhasil untuk saya. Semoga ini bisa membantu orang lain juga.
sumber
Jawabannya adalah Anda cukup drag dan drop folder ke proyek dan klik copy.
sumber
Saya mendapat pesan ini ketika saya menyeret dan menjatuhkan beberapa file sumber dari proyek lain. Ketika saya menghapusnya dan kemudian menambahkannya melalui "Tambah File ..." dari menu File, itu dibangun tanpa kesalahan.
sumber
Saya memiliki kesalahan yang sama dengan NSManagedObject dan itu karena saya menggunakan Core Data tetapi tidak memiliki kerangka Data Core dalam Build Phases - Link Binary With Libraries, seperti beberapa orang lain telah menjawab
sumber
Anda bisa mendapatkan jenis kesalahan ini jika Anda menambahkan perpustakaan pihak ketiga dalam proyek Anda yang membutuhkan kerangka kerja asli yang tidak termasuk dalam proyek Anda.
Anda perlu melihat di dalam file .h dan .m dari perpustakaan Anda yang baru ditambahkan dan melihat kerangka kerja apa yang diperlukan, kemudian sertakan kerangka kerja itu dalam proyek Anda (Target> Bangun Fase> Tautan Biner Dengan Perpustakaan).
sumber
Coba hapus kerangka kerja, bersihkan proyek, tambahkan kembali dan kompilasi. Atau Hapus kelas yang telah ditambahkan oleh xcode dalam sumber kompilasi, bersihkan proyek, tambahkan kembali lalu bangun.
sumber
Ingatlah bahwa Anda dapat meletakkan beberapa makro di pengontrol tampilan apa pun yang memanggil file yang sudah Anda hapus.
Aplikasi tidak akan menampilkan kesalahan apa pun sampai Anda membangun aplikasi Anda, itu akan membuang kesalahan dalam fase kompilasi dalam file .o.
Ingatlah untuk menghapus MACRO apa pun yang memanggil ke file yang sudah Anda hapus.
Terima kasih :)
sumber
Selain apa yang Allan lakukan, menambahkan kelas yang hilang, saya mengikuti solusi @ emdog4 dan menambahkan perpustakaan Core Data dengan pergi ke Build Phases di Xcode dan di bawah 'Link Binary with Libraries' dengan mengklik tanda + dan memilih 'CoreData.framework' . Ini menyelesaikan kesalahan saya
sumber