प्रतीक i386 वास्तुकला के लिए नहीं मिला


113

जब Xcode के साथ संकलन करने की कोशिश कर रहा हूं, तो मुझे निम्नलिखित त्रुटि मिल रही है:

  **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**

निश्चित नहीं कि इसका क्या मतलब है।

जवाबों:



92

यदि आपको अचानक से इस तरह की चीज मिलती है, तो आमतौर पर इसका मतलब है कि परियोजना को कुछ रूपरेखाओं की आवश्यकता नहीं है। पुस्तकालयों और आश्रित परियोजनाओं को रूपरेखा की आवश्यकता हो सकती है, इसलिए यदि आपने हाल ही में एक जोड़ा है तो यह त्रुटि पैदा कर सकता है।

फ्रेमवर्क जोड़ने के लिए, प्रोजेक्ट दृश्य में प्रोजेक्ट नाम पर राइट क्लिक करें, चुनें Add , फिर Existing frameworks...सूची से चयन करें । फिर उन प्रतीकों के साथ रूपरेखा खोजें, जो आप याद कर रहे हैं।

जैसा कि आप पाते हैं कि आपको किस रूपरेखा की आवश्यकता है, मैंने Google का उपयोग करना सबसे आसान पाया है, हालांकि आप शायद Xcode सहायता खोज का भी उपयोग कर सकते हैं। प्रतीकों में से एक के लिए खोजें, असम्बद्ध नाम को काम करने की पूरी कोशिश कर रहे हैं (जैसे,SCNetworkReachabilityGetFlags ) , और उसके बाद आप जो पहले दस्तावेज़ीकरण लिंक developer.apple.com पर पाते हैं, वह अक्सर सही होता है। आप आमतौर पर बहुत दूर शिकार करने की जरूरत नहीं है। इस मामले में, यह पृष्ठ है:

https://developer.apple.com/documentation/systemconfiguration/scnetworkreachability-g7d

फिर पृष्ठ के शीर्ष पर, यह आपको बताता है कि किस फ्रेमवर्क का उपयोग करना है, SystemConfiguration इस मामले में । तो उस परियोजना में जोड़ें, और फिर से संकलित करें।

तब तक बस यही करते रहिए जब तक यह काम न करे ...

संपादित करें: मैंने कभी भी सिम्युलेटर का उपयोग नहीं किया है, लेकिन यह वही है जो आप डिवाइस पर करते हैं - मुझे लगता है कि यह समान है ...


64

कभी-कभी स्रोत फाइलें होती हैं जो आपके लक्ष्य से गायब हैं।

  1. जांच करें कि कौन से प्रतीक गायब हैं
  2. लक्ष्य-> चरणों का निर्माण-> संकलन स्रोत
  3. यदि वे सूचीबद्ध नहीं हैं, तो अनुपलब्ध स्रोत फ़ाइलों को जोड़ें
  4. आनंद के लिए कमांड + बी

आप उन फ़ाइलों का चयन कर सकते हैं जो "गायब" लगती हैं और दाहिने हाथ की उपयोगिता बार में जांचती हैं कि उनके चेकबॉक्स को आपके द्वारा बनाए जा रहे लक्ष्य के लिए चुना गया है।


1
यह अक्सर तब हो सकता है जब दो प्रोजेक्ट फाइलों को अशुद्ध रूप से विलय कर दिया जाता है और लक्ष्य सदस्यता खो जाती है।
स्टीवन हेप्टिंग

1
बहुत बहुत धन्यवाद, किसी भी तरह से xcode फ्लॉप मंच के निर्माण में आवश्यक .m फ़ाइल जोड़ा!
ड्रीमपाउडर

1
धन्यवाद :) परियोजना में 2 फाइलें जोड़ें और केवल उन चरणों को करने के बाद सब कुछ ठीक था
user1105951

32

मैंने इसे निम्न विधि (XCode 4 के लिए) का उपयोग करके हल किया:

1) प्रोजेक्ट नेविगेशन विंडो में प्रोजेक्ट का चयन करें जो दाईं ओर प्रोजेक्ट सारांश दिखाएगा

2) 4th टैब बिल्ड चरणों का चयन करें

3) लाइब्रेरी विकल्प के साथ लिंक बाइनरी का चयन करें

4) वह ढांचा जोड़ें जिसके लिए आप मिल रहे हैं

5) फ्रेमवर्क को मेन फोल्डर से फ्रेमवर्क फोल्डर में ले जाएं

6) इसे फिर से बनाएं और त्रुटियां दूर हो गई हैं।


धन्यवाद। मुझे यह उत्तर MFMailCompose की खोज में मिला, और MessageUI.framework
फ्रैंक यिन

17

समस्या यह है कि जोड़े गए दायर के लिए लक्ष्य सदस्यता एप्लिकेशन लक्ष्य के लिए अनुपलब्ध है। फ़ाइल का चयन करें और लक्ष्य सदस्यता के बॉक्स में चेकमार्क जोड़ें

उदाहरण के लिए यदि त्रुटि एक विधि में दिखाई गई हैयहां छवि विवरण दर्ज करें


मुझे यह सिंबल नॉट फाउंड एरर मिला लेकिन स्थिति बहुत सरल थी। मैंने एक नए फ़ंक्शन के साथ एक नया मॉड्यूल (फ़ाइल) जोड़ा, जिसे मुझे अपनी योजनाओं में से एक की आवश्यकता थी। जब मैंने कुछ सप्ताह बाद एक अलग योजना बनाई, तो उस फ़ंक्शन का कॉल नहीं मिला। इसे लक्ष्य में शामिल करने की जरूरत थी।
विल

17

इसके लिए मेरा समाधान जोड़ने के लिए सोचा था, उसी त्रुटि पर कुछ घंटे बिताने के बाद :(

ऊपर दिए गए लोग सही थे कि पहली चीज जो आपको जांचनी चाहिए, वह यह है कि क्या आपने कोई ढांचा जोड़ने में चूक की थी, ऊपर दिए गए प्रथविद द्वारा दिए गए चरणों को देखें।

मेरी समस्या, यह पता चला, मैं इसे हटाए जाने के बाद एक संकलित वर्ग गायब था, और बाद में इसे फिर से वापस जोड़ दिया।

रिपोर्ट किए गए त्रुटि वर्गों के लिए दिखाए गए अनुसार अपने "संकलन स्रोत" की जाँच करें। आपके द्वारा बनाए गए किसी भी छूटे हुए वर्ग में जोड़ें।


2
धन्यवाद ... यह मेरे लिए काम करता है। मैं एक कस्टम वर्ग का अनुमान लगा रहा था। दोनों को कस्टम क्लास में कॉपी किया। h और .m प्रोजेक्ट में। क्या इस पर #import हुआ, फिर भी त्रुटि सामने आती है। "संकलित स्रोत" अनुभाग में कस्टम वर्ग को जोड़ा जा रहा है।
जिंककोड

बहुत बढ़िया! मेरे पास एक ही मुद्दा था Rocotilos, मैंने एक कस्टम वर्ग आयात किया, आयात किया, लेकिन अभी भी मुद्दा था। यह किया चाल! आपका बहुत बहुत धन्यवाद!
सौलेमैन

8

सुनिश्चित करें कि लापता रूपरेखा वास्तव में "लक्ष्य / निर्माण चरणों / पुस्तकालयों के साथ लिंक बाइनरी" के तहत सूचीबद्ध है, अगर इसे जोड़ नहीं है। जैसा कि पहले उल्लेख किया गया है यह आमतौर पर एक लापता रूपरेखा को इंगित करता है।

मेरी परियोजना में दो समान रूपरेखाएं सूचीबद्ध थीं, जब मैंने उनमें से एक को हटा दिया था जिसमें मुझे यह त्रुटि थी, क्योंकि इसने इसे "लिंक बाइनरी विद लाइब्रेरीज़" सूची के रूप में भी हटा दिया था। मैंने वापस जोड़ा और समस्या गायब हो गई (और मेरे पास अभी भी दो रूपरेखाएँ सूचीबद्ध हैं)


6

मैंने अपने सभी लक्ष्यों के लिए बिल्ड सेटिंग्स> आर्किटेक्चर को बदलकर अपनी परियोजना पर एक समान त्रुटि तय की ।

समस्या: जब मैंने Xcode 4.4 से Xcode 4.5 में अपग्रेड किया, तो मेरी परियोजना ने अभी भी सिम्युलेटर पर ठीक संकलित किया है, लेकिन उपकरणों पर संकलन नहीं किया है। डिवाइसों पर यह त्रुटि "आर्किटेक्चर armv7s के लिए नहीं मिला" प्रतीक (s) पाया गया, भ्रामक "Apple Mach-O Linker Error" और "clang: error: linker कमांड से बाहर निकलने के कोड 1 के साथ विफल हुआ (उपयोग -v को देखने के लिए। )। "

कारण (मेरे मामले में): मेरी परियोजना के कई लक्ष्य थे, और भले ही बिल्ड सेटिंग्स> मुख्य लक्ष्य के लिए आर्किटेक्चर armv7s आर्किटेक्चर को शामिल करने के लिए सेट किया गया था, मुख्य लक्ष्य दूसरे लक्ष्य पर निर्भर था (बिल्ड चरणों> निर्भरता के तहत सूचीबद्ध), और मैंने उस अन्य लक्ष्य के लिए बिल्ड सेटिंग्स> आर्किटेक्चर को रीसेट करने के बारे में नहीं सोचा था, और मुझे इसे बदलकर armv7s शामिल करना था। मुझे लगता है कि सिम्युलेटर और डिवाइस विभिन्न आर्किटेक्चर पर चलते हैं, और इसीलिए डिवाइस ठीक नहीं होने पर सिम्युलेटर ठीक था।


5

क्या आपका प्रोजेक्ट किसी अन्य प्रोजेक्ट पर निर्भर करता है, और यह है कि उस परियोजना का एक लक्ष्य आपके मुख्य लक्ष्य की प्रत्यक्ष निर्भरता है? यदि यह मामला है और निर्भरता स्थापित नहीं है, तो आश्रित लक्ष्य सभी कॉन्फ़िगरेशन (यानी सिम्युलेटर) के लिए नहीं बनाया जा सकता है

बस एक जंगली अनुमान है।


4

एक अन्य स्थिति जो इस समस्या का कारण बन सकती है यदि आपका कोड C ++ में कॉल करता है, या C ++ कोड द्वारा कॉल किया जाता है। ओबज-सी से कॉल करने पर मुझे अपने स्वयं के .c फ़ाइल की उपयोगिता फ़ंक्शन के साथ "प्रतीक नहीं मिला" दिखाते हुए एक समस्या थी। फ़ाइल प्रकार बदलने के लिए फिक्स था: Xcode 4 में, फ़ाइल प्रकार को "ऑब्जेक्टिव-सी ++ सोर्स" पर सेट करने के लिए विस्तारित जानकारी फलक का उपयोग करें; Xcode 3 में, फ़ाइल प्रकार को "source.cpp.objcpp" में बदलने के लिए "गेट इन्फो" का उपयोग करें।


4

मेरे मामले में किसी भी पोस्ट किए गए समाधान ने काम नहीं किया। मुझे प्रोजेक्ट को हटाना पड़ा और SVN सर्वर से एक नया चेकआउट करना पड़ा । लकी मी प्रोजेक्ट को एक वर्जन कंट्रोल सिस्टम में होस्ट किया गया था। नहीं जानता कि मैं अन्यथा क्या करता।


2

एक सी + + परियोजना में एक परिभाषित टेम्प्लेटाइज्ड क्लास का उपयोग करते हुए, उसी त्रुटि को प्राप्त करते हुए, मैंने प्रोजेक्ट नेविगेटर में परिभाषित टेम्प्लेटाइज्ड क्लास के साथ .cpp फ़ाइल का चयन किया , फिर हटाएं> संदर्भ निकालें। इसके अलावा, संबंधित .h फ़ाइल, जबकि अभी भी प्रोजेक्ट में संदर्भित है, को .cpp के रूप में #include स्टेटमेंट रखने की आवश्यकता है:

#ifndef __CircularBuffer__CircularBufferT__
#define __CircularBuffer__CircularBufferT__

... snip ...

#include "CircularBufferT.cpp"
#endif /* defined(__CircularBuffer__CircularBufferT__) */

यदि आप देखना चाहते हैं, तो एक सरल परियोजना उदाहरण जीथब पर है :

यह अप्रत्यक्ष प्रवंचना का एक छोटा सा हिस्सा है और मुझे इस समाधान का मूल स्रोत याद नहीं है।


2

यदि यह त्रुटि अचानक प्रकट होती है, तो इसका मतलब है कि परियोजना कुछ रूपरेखाओं को याद कर रही है। पुस्तकालयों और आश्रित परियोजनाओं को रूपरेखा की आवश्यकता हो सकती है, इसलिए यदि आपने हाल ही में एक जोड़ा है तो यह त्रुटि पैदा कर सकता है।

फ्रेमवर्क जोड़ने के लिए, प्रोजेक्ट दृश्य में प्रोजेक्ट नाम पर राइट क्लिक करें, ऐड चुनें, फिर सूची से मौजूदा फ्रेमवर्क चुनें। फिर उन प्रतीकों के साथ रूपरेखा खोजें, जो आप याद कर रहे हैं।

दूसरी बात यह है कि यदि आपने संकलित संसाधनों में कोई वर्ग जोड़ा है और उस वर्ग को परियोजना से हटाया है तो त्रुटि दिखाई देती है। सबसे अच्छी बात यह है कि संकलित संसाधनों (निर्माण सेटिंग्स -> संकलन स्रोतों) से कक्षाएं हटा दें जो परियोजना से हटा दी गई हैं।

मेरे मामले में मैंने प्रोजेक्ट में कॉम्फोब क्लास को जोड़ा है और प्रोजेक्ट को संकलित किया है। बाद के एक मामले में मैं अपने प्रोजेक्ट में कॉम्बो को शामिल नहीं करना चाहता, इसलिए मैंने अपने प्रोजेक्ट से कॉम्बो क्लासेस के संदर्भ हटा दिए। जब यह त्रुटि आई, तो मैंने संकलन संसाधनों से अपने एड्मोब के .m वर्ग को हटा दिया।


2

PSPDFKIT पर कॉपी करने की कोशिश के दौरान मेरे साथ ऐसा हुआ मेरी परियोजना में डेमो लाइब्रेरी । मैंने साइट में सभी निर्देशों का पालन किया + इस पेज पर सभी सुझावों .. किसी कारण से यह उपरोक्त त्रुटि देने पर रहा, समस्या यह थी कि अगर मैंने त्रुटि विधि में संदेश को पकड़ लिया .. तो यह केवल बाइनरी में दिखाई दिया () जाहिर है मेरे पास सोर्स कोड b / c का कोई उपयोग नहीं है, मुझे इसके लिए भुगतान करना होगा)।

मैंने इसे अनुदेश पृष्ठ में देखा है:

यहां छवि विवरण दर्ज करें

इसलिए मैं उस कॉन्फिग फ़ाइल की हिम्मत के पास गया और यह पाया:

OTHER_LDFLAGS=$(inherited) -ObjC -fobjc-arc -lz -framework CoreText -framework CoreMedia -framework MediaPlayer -framework AVFoundation -framework ImageIO -framework MediaPlayer -framework MessageUI -framework CoreGraphics -framework Foundation -framework QuartzCore -framework AVFoundation -framework CFNetwork -framework MobileCoreServices -framework SystemConfiguration -weak_framework UIKit

फिर मैं उक्त पुस्तकालय के लेखक द्वारा उपलब्ध कराए गए नमूना परियोजना पर गया .. और देखा कि पिछले झंडे जहां मेरी बिल्ड सेटिंग्स में अन्य लिंकर झंडे के लिए शब्दशः कॉपी किए गए थे .. हालांकि मेरी परियोजना में .. वे नहीं थे! .. तो मैं बस कॉपी और उन्हें अपनी परियोजना की अन्य सेटिंग्स झंडे के निर्माण में चिपकाया और सब कुछ काम किया!

दूर बिंदु: यदि आप अपने सेटअप पर कुछ .xcconfig फ़ाइल पर भरोसा कर रहे हैं, तो नमूना कोड स्रोत या किसी चीज़ के साथ डबल चेक करें और सुनिश्चित करें कि यह वास्तव में लागू किया गया है .. यह मेरे मामले में ठीक से लागू नहीं किया गया था


0

एक और कारण यह हो सकता है जब आप एक एसडीके को UPGRADE करते हैं।

यदि आप बस समूह को हटाते हैं, और फिर प्रोजेक्ट के लिए नया फ़ोल्डर खींचें और छोड़ें, "लाइब्रेरी सर्च पाथ" में दोनों एसडीके होंगे। हल करने के लिए, बस पुराने एसडीके पथ को हटा दें।


0

मैंने एक CoreGocation Framework को जोड़े बिना एक CLGeocoder का उपयोग किया था। मूल रूप से यह त्रुटि कई चीजों का मतलब हो सकती है। मैं उम्मीद करता हूं कि इससे किसी की मदद होगी।


0

इससे पहले कि मैं महसूस करता हूं कि मैंने केवल एक डेटा-केवल @interface जोड़ा है और खाली @implementation ब्लॉक जोड़ना भूल गया हूं।


0

Xcode 11 में इस मुद्दे पर आया, फिक्स 10.0 से 11.0 तक न्यूनतम तैनाती लक्ष्य को बदल रहा था, आशा है कि यह किसी की मदद करता है :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.