लिंक कोड 1 के साथ लिंकर कमांड विफल हो गया (उपयोग -v को मंगलाचरण देखने के लिए), Xcode 8, स्विफ्ट 3


114

मैं इस त्रुटि से छुटकारा नहीं पा सकता हूँ!

मैंने व्युत्पन्न डेटा (प्राथमिकताएँ-> स्थान-> खोजकर्ता में व्युत्पन्न डेटा फ़ोल्डर खोलने के लिए ग्रे तीर क्लिक करें - राइट-क्लिक, ट्रैश में स्थानांतरित करें), परियोजना की सफाई (CMD + Shift + K / उत्पाद) जैसी सभी प्रकार की कोशिश की है। -> स्वच्छ), कार्थेज और निर्भरता को अपडेट करते हुए, StackOverflow (ज्यादातर बिल्ड सेटिंग्स / चरणों में समायोजन) पर अन्य उत्तरों की जाँच की, और जीथब, आदि से ऐप को पुनः प्राप्त किया।

वही परियोजना मेरे सहयोगी कंप्यूटर पर काम करती है।

संपादित करें: वर्तमान टॉप-रेटेड उत्तर से, मैं थोड़ा आगे डिबग करने में सक्षम था ... मुझे अभी भी यकीन नहीं है कि हालांकि कैसे ठीक करना है। ऐसा लगता है कि मेरे पास परियोजना में दो बार कुछ है? मैंने देखा और दो बार दिखाते हुए कुछ भी नहीं मिला!

यहाँ लॉग की एक तस्वीर है:



अगर आपने आपकी समस्या का समाधान नहीं किया तो आपने शीर्ष रेटेड उत्तर को क्यों स्वीकार किया ...?
बेनामटिस

जवाबों:


160

मैं आज xcode 8 संस्करण 8.3.2 में इसी मुद्दे का सामना कर रहा था

राइट क्लिक पर समस्या -> लॉग में प्रकट

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

तब आप यह जांचने में सक्षम होते हैं कि यह समस्या क्या है

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


उसके लिए धन्यवाद! यहाँ मुझे लॉग में क्या मिला: imgur.com/vFkNJzZ
Jake Dobson

मैंने आखिरकार इसका हल निकाल लिया। आपने मुझे सही दिशा में ले जाने में मदद की! यह वास्तव में चूसा है कि Xcode लॉग को प्रकट नहीं किया जब पर क्लिक किया ... मुझे कुछ समय बचा सकता था!
जेक डोबसन

लॉग टिप में खुलासा के लिए धन्यवाद। मुझे नहीं पता था कि मैं इसका इस्तेमाल कर सकता हूं
करेनएने

1
@GhasemTabatabaei नीचे दिए गए मेरे उत्तर की जाँच करें
जेक डोबसन

81
यह स्वीकृत उत्तर क्यों है? यह वास्तव में सवाल का जवाब नहीं देता है, केवल समाधान तक पहुंचने में संभावित रूप से सहायता करता है।
टॉम ओकले

116

हो सकता है कि आपने एक पॉड फ़ाइल स्थापित की हो और आप .xcodeprojइसके बजाय फ़ाइल से निर्माण करना चाह रहे हों.xcworkspace


4
नहीं, मैंने उस कारण से कार्टाज का इस्तेमाल किया। यह एक वैध जवाब है जो इस त्रुटि के साथ अन्य लोगों की मदद कर सकता है, हालांकि!
जेक डोबसन

1
मैंने मौजूदा परियोजना में $ $ AppCenter कोड जोड़ा और इसे पोड्स की आवश्यकता थी। पता नहीं क्या हो रहा था और .xcodeprojएक साल से अधिक समय से कर रहा था .. कुछ सरल!
डेनिस स्मोलेक

1
मेरा फिक्स इससे कुछ हद तक संबंधित था। मैंने हाल ही में कुछ निर्भरताओं को अपग्रेड किया था और परियोजना ने अब कोकोआपोड्स का उपयोग किया। पहले मैं हमेशा प्रोजेक्ट फ़ाइल से काम कर रहा था। मैंने कार्यक्षेत्र फ़ाइल खोली, जिसमें मेरी परियोजना और पॉड दोनों थे, और सब कुछ ठीक था।
रोजगोनी

40

केवल एक चीज जो मेरे लिए काम करती थी वह थी दौड़ना pod deintegrateऔरpod install


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

ठीक है, यह मेरे लिए काम नहीं करता है और जब मैंने इसे गुगली किया तो यही सामने आया, इसलिए मैंने सोचा कि आईडी की कोशिश करो और किसी और की मदद करो ... इस के लिए नया, क्या मुझे अपना जवाब हटाना चाहिए?
चार्ल्स हेरिंग

मुझे लगता है कि यह पहले से ही वहां नहीं है। मुझे यकीन है कि किसी को यह उपयोगी लग सकता है। मैं जिस ऐप का इस्तेमाल कर रहा था, उसमें कोकोपोड्स का इस्तेमाल नहीं किया गया था। बात यह है कि, यह त्रुटि बहुत सामान्य है और अपने बारे में बहुत कम जानकारी देती है। प्रत्येक परियोजना के आधार पर इतने सारे समाधान मिल सकते हैं।
जेक डोब्सन

यह मेरा दिन बचाता है! भगवान आपका भला करे!
user2612604

19

क्या तुमने एक साफ कोशिश की? cmd + शिफ्ट + के


8
ओह, हाँ .. कई बार!
जेक डोबसन

यह शाब्दिक रूप से सभी मुझे मिलता है ... पाठ पर क्लिक करने से मुझे किसी भी अतिरिक्त जानकारी या फ़ाइल के स्थान पर नहीं भेजा जाता है जहां ऐसा हुआ था जैसे कि यह अधिकांश त्रुटियों के लिए होता है। कंसोल में कुछ भी नहीं है, यह इस त्रुटि के कारण ऐप को चलाने के लिए कभी नहीं मिलता है ..
जेक

एफडब्ल्यूआईडब्ल्यू, मुझे हाल ही में इस मुद्दे का सामना करना पड़ा जब एसडीके और @ फ्रांसिस्कोपेरेस के सुझाव के साथ निर्माण किया। डिबगिंग में बहुत गहरे उतरने से पहले निश्चित रूप से इसे पहले चरण के रूप में सुझाएं।
२०

9

ठीक है ... तो यहाँ क्या मेरी समस्या हल हो गई है ...

ऐप डेलीगेट फ़ाइल में:

#import "AppDelegate.h"
#import "DarkSkyAPI.h"
//#import "Credentials.h"

मैंने अपने प्रोजेक्ट में पहले से ही DarkSkyAPI.m.m फ़ाइल में क्रेडेंशियल इंपोर्ट कर लिया था। अतिरिक्त आयात पर टिप्पणी करने से त्रुटि दूर हो गई!

कुछ बातों का उल्लेख करना और शायद भविष्य में किसी की मदद करना। @ umairqureshi_6 के जवाब ने मुझे इस प्रक्रिया में मदद की, लेकिन इसे हल नहीं किया। उन्होंने कहा कि मैं जानकारी खोदने में सक्षम था। मैं AppDelegate और DarkSkyAPI फ़ाइलों को त्रुटि लॉग में दिखा रहा था और यह क्रेडेंशियल फ़ाइल से खींच रहा था जानकारी त्रुटि पैदा कर रहा था। मुझे पता था कि इसे इन 3 फाइलों में से एक में होना है, इसलिए मैंने तुरंत आयात की जाँच की, क्योंकि मुझे यह याद है कि .h अपनी फ़ाइल से सभी आयात करता है। बूम!


6

मुझे लगता है कि अब इस सवाल का जवाब पहले ही मिल चुका है। लेकिन अगर इससे किसी को कुछ समय बचाने में मदद मिलती है: तो मेरी भी यही गलती थी। मैंने अपनी तरफ से एक बहुत छोटी और बेवकूफ गलती खोजने के लिए सब कुछ जांचा। मैंने अपनी परियोजना के व्यू कंट्रोलर में एक मुख्य डेटा प्रबंधित प्रबंधित कस्टम फ़ाइल आयात की। मैंने .h के बजाय गलती से .m फ़ाइल आयात कर ली है जो आर्किटेक्चर एरर (लिंकर कमांड कमांड) में डुप्लिकेट सिंबल का कारण बन रही थी क्योंकि प्रॉपर्टीज़ क्लास की मेरी .m फ़ाइल कोर डेटा क्लास की .h फ़ाइल आयात करती है और इसलिए डुप्लिकेट आयात का कारण बनती है।

यदि आप कई समाधानों को आज़माने से पहले सिर्फ यह जाँच लें कि क्या आपने सही फाइलें आयात की हैं!


हाँ! यह मेरी समस्या के समान था। मुझे अपनी परियोजना में एक ही फ़ाइल दो बार आयात करनी पड़ी। बल्कि, मैंने "fileA.h" को "fileB.h" में आयात किया, लेकिन फिर "fileA.h" और "fileB.h" को "fileC.h" में आयात किया, या उन पंक्तियों के साथ कुछ ... तो ऐप क्रैश हो गया क्योंकि यह पता नहीं है कि किसका उपयोग करना है। निश्चित रूप से एक अच्छी जगह के लिए दूसरों के लिए एक याद दिलाने के लिए उनके फ़ाइल आयात की जाँच करें!
जेक

6

बहुत सारे समाधान ऊपर उल्लिखित हैं। किसी ने मेरे लिए काम नहीं किया (लेकिन कृपया पहले से ऊपर की कोशिश करें)।

प्रोजेक्ट चुनें -> टारगेट चुनें -> लिंक्ड फ्रेमवर्क एंड लाइब्रेरी -> सभी पॉड लाइब्रेरी जोड़ें। (निकालें यदि वे एम्बेडेड बायनेरिज़ में मौजूद हैं)

अब xcode के लेफ्ट फाइल एक्सप्लोरर में फ्रेमवर्क फोल्डर से इन्हें हटा दें।

इससे मेरी समस्या हल हो गई।


4

प्रोजेक्ट का चयन करें-> बिल्ड फेज-> लाइब्रेरी के साथ बाइनरी लिंक करें और सभी पॉड लाइब्रेरी जोड़ें।


3

मुझे निर्भरता के लिए कार्थेज का उपयोग करने में एक ही समस्या थी।

सिलेक्ट प्रोजेक्ट में जाएं -> बिल्ड सेटिंग्स -> इनेबल बिटकॉइन की खोज करें -> यदि यह हां में चयनित है, तो नंबर का चयन करें।

यही मेरे लिए इस समस्या का हल है।


2

मुझे भी यही समस्या थी।

कारण यह था कि मैंने 2 फ़ाइलों में समान वैश्विक चर घोषित किया था । तो यह 2 डुप्लिकेट प्रतीकों को कहते हुए एक ही त्रुटि दिखा रहा था

इसका हल उन चरों को निकालना था।


1
आपने दोनों को ही क्यों नहीं हटाया?
जेक डोब्सन

2

किसी के लिए भी इस मुद्दे के साथ घबराहट की रूपरेखा। यह मेरा मुद्दा तय हो गया है। मेरे लिए मुद्दा यह था कि मैंने निम्नलिखित फ़ाइलों को आयात किया था, लेकिन उनका उपयोग कभी नहीं किया। "libFlurryTVOS_9.2.3" "libFlurryWatch_9.2.3"

इसलिए मुझे केवल इतना करना था कि लक्ष्य सेटिंग्स को प्रोजेक्ट करें और "लिंक्ड फ्रेमवर्क और लाइब्रेरीज़" से इन 2 फाइलों को हटा दें और समस्या हल हो गई।


2

मेरे मामले में त्रुटि का कारण पुस्तकालय है जो दो बार जुड़ा हुआ था।

मैं इसका उपयोग करता हूं react-nativeइसलिए यह स्वचालित react-native linkरूप से xcode के उपयोग और मैन्युअल रूप से जुड़ा हुआ था ।


2

सुनिश्चित करें कि Find Implicit Dependenciesचेकबॉक्स की जाँच की गई है।

(उत्पाद -> योजना -> संपादन योजना -> निर्माण -> निहित निर्भरता खोजें)


2

मैं कोकोआपोड्स के साथ स्पार्कल फ्रेमवर्क का परीक्षण कर रहा था।

अफसोस की बात है, मैंने pod 'Sparkle', '~> 1.21'पोडफाइल को गलत जगह पर रखा। मैंने इसे परीक्षण के नीचे रखा (इकाई परीक्षणों के लिए)।

एक बार पॉडफाइल में सही जगह पर रखने पर सब कुछ ठीक हो जाता है।


1

मुझे बस करना था import Foundation!

मैं स्विफ्ट सर्वर साइड के लिए किटुरा का उपयोग कर रहा था और यह भूल रहा था!


हा। हाँ, आपको कुछ भी करने से पहले हमेशा कम से कम आयात फाउंडेशन की आवश्यकता होगी! मैं आमतौर पर UIKit को फाउंडेशन के बजाय आयात करता हूं, क्योंकि लगभग हमेशा मुझे UIKit के फीचर्स का उपयोग करने की आवश्यकता होगी और UIKit को आपके लिए फाउंडेशन से सब कुछ विरासत में मिला है। Objc के साथ आयात बहुत मुश्किल हो सकता है, लेकिन ऐसा लगता है कि आप स्विफ्ट का उपयोग कर रहे थे?
जेक डोबसन

हां, मैं स्विफ्ट का उपयोग कर रहा था, हाथ में फाइल कोई संकलक मुद्दे नहीं दिखा रहा था, लेकिन केवल फ़ाइल चलाने के दौरान, मैं इस मुद्दे में भाग गया!
शहद 10

1
हाँ, मुझे नहीं लगता कि यह वास्तव में उस समय तक जांच करता है, जब तक कि मैं गलत न हो जाऊं। लेकिन, ऐसा लगता है कि यह तब तक एक मुद्दा नहीं होगा जब तक आप फाउंडेशन से कुछ का उपयोग करने की कोशिश कर रहे थे, आयात नहीं पा सकते थे, फिर प्रक्रिया को जारी नहीं रख सकते थे - दुर्घटना!
जेक डोबसन

1

यहाँ मेरी समस्या और समाधान है:

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

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

अगर किसी को क्लास फाइल के संबंध में लिंकर त्रुटि का सामना करना पड़ा है, तो इसे मैन्युअल रूप से जोड़ने का प्रयास करें।


1
यह निश्चित रूप से एक फ़ाइल समस्या की तरह लगता है जिस पर वे संकेत देने की कोशिश कर रहे हैं ... फाइलें कहीं और एक दूसरे से जानकारी प्राप्त नहीं कर रही हैं जो आमतौर पर इस पृष्ठ पर मिलती हैं। आपके जवाब के लिए धन्यवाद। उम्मीद है कि यह किसी को सड़क के नीचे मदद करता है!
जेक

1

जब मैं अपने डिवाइस पर बनाया और भागा, तो यह समस्या नहीं थी। केवल सिमुलेटर के साथ यह समस्या थी। मैंने अभी-अभी अपने कंप्यूटर को रीस्टार्ट किया और उसे चलाया। इसने काम कर दिया।


1

मेरे मामले में मैंने अपने Targetनाम में परिवर्तन किया है Podfileतो यह मेरे लिए एक ही त्रुटि है।

उपाय

बस project-> Build Phase->Link Binary with librariesपुराने FrameWorksको निकालें पर क्लिक करें minus button(-)और स्वच्छ और फिर से चलाएँ। यह मेरा काम है

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

अनवांटेड निकालें .framework


1

अन्य जवाब मेरे लिए काम नहीं करते थे इसलिए मैं यहाँ अपना समाधान साझा करता हूँ अगर यह किसी और की मदद कर सकता है:

मेरी समस्या यह थी कि मैं गलत प्लेटफॉर्म के लिए अपने XCode-Project के पॉडफाइल को कॉन्फ़िगर कर रहा था। मेरे पॉडफाइल की शुरुआत में "प्लेटफॉर्म: आईओएस" को "प्लेटफॉर्म: मैकोस" में बदलना मेरे लिए त्रुटि से छुटकारा पाने के लिए काम किया।


0

मुझे भी यही समस्या थी। यदि आप किसी भी github प्रोजेक्ट की जांच कर रहे हैं, तो git क्लोन का उपयोग करने के बजाय, git lfs क्लोन का उपयोग करें, जैसे कभी-कभी, कुछ बड़ी फ़ाइलों को केवल git का उपयोग करके ठीक से क्लोन नहीं किया जाता है। इसके अलावा, सुनिश्चित करें कि आपका बिटकोड अक्षम है।


अच्छा नोट..लेकिन आमतौर पर कंसोल आपको बता देगा कि कुछ फाइलें ट्रांसफर होने के लिए बहुत बड़ी हैं?
जेक डोबसन

0

मेरे लिए, मणि लॉक फ़ाइल मेरे द्वारा इंस्टॉल किए गए की तुलना में कोकोपोड्स के पुराने संस्करण को निर्दिष्ट कर रहा था। मुझे bundle exec pod installइसके बजाय फिर से शाखा और भागना पड़ाpod install


0

ऐसा लगता है कि मुद्दा हम में से अधिकांश के लिए अलग है, और त्रुटि संदेश में अच्छी जानकारी है। मेरे मामले में, तैनाती लक्ष्य रेखा 10.13द्वारा निर्धारित किया गया export MACOSX_DEPLOYMENT_TARGET=10.13था, लेकिन मैं भाग रहा था 10.14। इसलिए मुझे अपने तैनाती लक्ष्य को 10.14सामान्य> परिनियोजन जानकारी पर स्विच करना पड़ा , ताकि ITLibrary से संबंधित प्रतीकों को फिर से उपलब्ध कराया जा सके।

cd /Users/foo/src/scrobble/macos/itunes-scrobble
    export MACOSX_DEPLOYMENT_TARGET=10.13

... SNIP ...

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ITLibMediaItem", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibPlaylist", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibrary", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

0

मेरे मामले में, मैं एक ही परियोजना से कई उत्पादों का उत्पादन कर रहा था। किसी एक उत्पाद के लिए, main.mफ़ाइल उसी प्रोजेक्ट के तहत किसी अन्य फ़ोल्डर से हेडर फ़ाइल आयात करती है। लेकिन वह फाइल "बिल्ड चरण" के तहत "शिकायत वाले स्रोतों" में शामिल नहीं थी। इससे लिंकर त्रुटि हुई।

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

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


-1

Ionic 1 परियोजना का निर्माण करते समय मुझे वही मुद्दे मिले।

मैं CDVLogger.h & CDVLogger.m फ़ाइल को हटाने के बाद समस्या को हल करने में सक्षम था


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

-4

ठीक है, मुझे आज भी वही समस्या थी और मैं इसे शुरू कर रहा था, जब मैं इस धागे के पार आया था। जब मैंने जवाब दिया तो मेरे दिमाग में सवाल नहीं आया। मैंने एक खाली कंस्ट्रक्टर के साथ कक्षा घोषित की

class MyClass{
    MyClass();

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

फिर मैंने सोचा कि क्यों नहीं समाप्त किया जा रहा है (यह सुनिश्चित नहीं है कि मैं यहां शब्द चयन के साथ सही हूं, लेकिन जो मेरी कक्षा के निर्माता घुंघराले ब्रेसिज़ के साथ) परवाह करता है {}। तो मैंने किया:

class MyClass{
    MyClass(){}

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

समस्या समाप्त हो गई, मेरे कोड ने पूरी तरह से काम करना शुरू कर दिया।

मुझे पता है, अच्छा अभ्यास इस मुद्दे की जांच करना और वास्तविक कारण ढूंढना है, लेकिन यह मेरे लिए काम करता है।


मुझे नहीं लगता कि यह इस थ्रेड के लिए सहायक है ... ऐसा लगता है कि त्रुटि फ़ाइल समस्या पर प्राप्त करने की कोशिश कर रही है, जैसे अलग-अलग फ़ाइलों में एक ही चीज़ को आयात करना। मुझे यह अजीब लगता है कि आपको यह त्रुटि मिलेगी, क्योंकि यह एक ऑब्जेक्टिव-सी विशिष्ट त्रुटि है ...
जेक डॉब्सन

मुझे C ++ में भी यह त्रुटि मिली। आपके मामले में लिंकर त्रुटि शायद यह थी कि लिंक करने वाला आपके निर्माता के लिए कोड नहीं ढूंढ सकता था। मेरे पास एक फ़ंक्शन के साथ एक समान त्रुटि थी जिसे मैंने नाम दिया था, क्योंकि Xcode 10 अपने आप ही लिंकर लॉग नहीं खोलेगा, और मुझे नहीं पता था कि आप राइट-क्लिक कर सकते हैं और "लॉग में प्रकट" कर सकते हैं, मैं कुछ के लिए स्टम्प्ड था मिनट त्रुटि का पता लगाने की कोशिश कर रहा है।
मैट पार्किन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.