AdMob में एप्लिकेशन डालने के बाद त्रुटि "लाइब्रेरी के लिए नहीं मिली"


150

AdMob में अपना एप्लिकेशन डालने के बाद मुझे एक त्रुटि मिल रही है। ऐप आज तक काम कर रहा था। त्रुटि निम्नलिखित है:

ld: library not found for -lGoogleAdMobAds
clang: error: linker command failed with exit code 1 (use -v to see invocation)

मैं इसे कैसे ठीक करूं? धन्यवाद।


इसे आज़माएँ: stackoverflow.com/questions/1471968/…
nmh


कभी-कभी: अपने डिवाइस को अनप्लग करें और पहले प्रोजेक्ट का निर्माण करें। यह पुस्तकालयों को उत्पन्न करेगा और फिर आप डिवाइस में चला पाएंगे।
द टाइगर

जवाबों:


114

कभी-कभी आप सिर्फ लाइब्रेरी का संदर्भ हटा देते हैं और फिर से संदर्भ जोड़ते हैं।

Google मोबाइल विज्ञापन एसडीके और अन्य पुस्तकालयों को फिर से खरोंच से जोड़ने के अलावा, मैं आपको लाइब्रेरी खोज पथों की जाँच करने की सलाह दूंगा । ऐसे उदाहरण हैं जब आप किसी लक्ष्य को कॉपी या डुप्लिकेट करते हैं, तो Xcode निर्णय लेता है कि उसे किसी '' \ _ '' के साथ किसी भी दोहरे उद्धरण चिह्नों से बचने की आवश्यकता है। सुनिश्चित करें कि आप सभी \ "s को हटा दें - यह इस तरह दिखना चाहिए -

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

मैं कई '\' के साथ अपने पथ को पूर्वनिर्मित करके, त्रुटि को डुप्लिकेट करने में सक्षम था।


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

अच्छी तरह से यह मेरा मुद्दा "लाइब्रेरी फॉर-एलर्ट नहीं मिला" और यह वास्तव में अविश्वसनीय है! धन्यवाद !
जेडट्यूक्स

"हेडर सर्च पाथ्स" पर भी विचार करें।
लुअत

@raurora आप लाइब्रेरी खोज पथ तक कैसे पहुँच सकते हैं?
मैसिमो फ्रिटेल्ली

1
@MassimoFrittelli प्रोजेक्ट> सेटिंग टैब> खोज पथ बनाएँ। आप खोज विकल्प पर भी टाइप कर सकते हैं।
रौरा

315

मेरे पास एक समान "पुस्तकालय नहीं मिला" मुद्दा था। हालाँकि ऐसा इसलिए था क्योंकि मैं गलती से .xcodeprojफाइल के बजाय फाइल का इस्तेमाल कर रहा था .xcworkspace


4
क्या कोई कृपया .xcodeproj और .xcworkspace के उद्देश्य की व्याख्या कर सकता है?
EFreak

11
इस तरह की बातें मुझे जावास्क्रिप्ट पारिस्थितिकी तंत्र से प्यार करती हैं
मार्क

मैं इसे कैसे बदल सकता हूँ ..?
ब्रायन लोयजा

8
xcworkspace जब आप कोकोपोड्स का उपयोग करते हैं। यह Xcode की समस्या नहीं है, बल्कि उपयोगकर्ताओं की है।
आजम

1
.xcworkspace है जब आपके पास 1 से अधिक "प्रोजेक्ट" आपके समाधान के अंदर हैं। उदाहरण के लिए आपके पास बाहरी पुस्तकालय (कोकोपोड्स) या आपके स्वयं के पुस्तकालय हो सकते हैं जो आप कई परियोजनाओं में उपयोग करते हैं।
डैनियल बेनिदकट

86

अपने लक्ष्य का चयन करें, करने के लिए जाने "Build Phases"में "Link Binary With Libraries"निकालें ".a"कि पुस्तकालय की फ़ाइल। साफ और निर्माण।


3
हाँ, काफी अजीब है कि Xcode इसे लाल रंग से गायब करके चिह्नित नहीं करता है
दिमागी

बहुत अच्छे!! मेरी समस्या तब थी जब मैंने पुराने प्रोजेक्ट में यूजर फ्रेमवर्क जोड़ा था। Coreplot.a निकालें और ठीक काम करता है !!!!
जोस पोज एस

66

यदि निम्नानुसार कोकोपोड्स से संबंधित त्रुटि है:

library not found for -lPod-...

आपको अन्य लिंकर फ्लैग की जांच करने और इसे वहां से हटाने की आवश्यकता है ।

अतिरिक्त जानकारी: यदि आपके पास एक पुरानी परियोजना है जो कोकोपोड्स का उपयोग करती है। और हाल ही में आपको use_frameworks जोड़ने की आवश्यकता थी! अपने podfile को। कोकोआपोड्स आपके अन्य लिंकर झंडे में पुस्तकालयों को नहीं जोड़ेंगे, जो अब विरासत में मिला है। इसलिए, आपको उन अन्य लिंकर फ़्लैग से मैन्युअल रूप से निकालने की आवश्यकता हो सकती है, जो यूज़_फ्रेमवर्क के उपयोग से पहले जोड़े गए थे!


1
मेरे पास यहां कई झंडे हैं, क्या मुझे पॉड के लिए सभी या सिर्फ एक को हटाना चाहिए?
मयूर देशमुख

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

1
मुझे लगता है कि ऐसा तब होता है जब आप उस लाइब्रेरी को हटाने की कोशिश करते हैं जो कोको पोड्स द्वारा मैन्युअल रूप से जोड़ी जाती है। सही तरीका यह है कि अपने पॉडफाइल से लाइब्रेरी को हटा दें। फिर आप फिर से पॉड इंस्टॉल चलाते हैं
hasan

1
धन्यवाद!! यह मेरे लिए एक सुराग था :)। मेरे मामले में, डुप्लिकेट लक्ष्य ने प्रत्येक -l "फ्रेमवर्क" को दो लाइनों "-l" और "फ्रेमवर्क" में विभाजित किया है !!
इवा मादराज़ो

1
@IanSteffy बस इसे गठबंधन
ईवा

57

मेरे मामले में Xcode 7 के लिए , Xcode 9.1 में भी काम किया

ld: library not found for -ldAfnetworking
clang: error: linker command failed with exit code 1 (use -v to see invocation)

सेट Build Active architecture Onlyकरने के लिएYes

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


2
जब हमें ऐप स्टोर के लिए प्रोडक्शन बिल्ड बनाने की आवश्यकता होती है तो क्या होगा? मेरा मतलब है कि यह प्रोडक्शन बिल्ड के लिए NO होना चाहिए।
जब्बार

सहमत हूँ कि यह उत्पादन के लिए नहीं होना चाहिए
Ted

2
क्या यह उत्पादन निर्माण स्थापना पर कोई प्रभाव नहीं पड़ेगा?
जब्बार

1
XCode 9.2 और iOS 11.
आकाश अग्रवाल

21

यदि आप कोकोपोड्स का उपयोग कर रहे हैं तो ऐसा होता है, .xcworkspaceडिफ़ॉल्ट .xcodeprojफ़ाइल के बजाय फ़ाइल का उपयोग करें ।


15

यदि त्रुटि निम्नलिखित की तरह है

ld: -lpods के लिए लाइब्रेरी नहीं मिली

मैंने पाया कि एक फ़ाइल "libPods.a" जो लाल रंग में है (जैसे लापता फ़ाइलें) परियोजना के फ्रेमवर्क समूह में किसी तरह बनाई गई थी। मैंने बस उस फ़ाइल को हटा दिया और सब कुछ ठीक हो गया।

संपादित करें: एक और समाधान

एक और समाधान जो मैंने पहले से ही इसी तरह के प्रश्न में उत्तर दिया है, इस लिंक में है


12

गोटो बिल्ड फ़ेज़ -> लिंक बाइनरी लाइब्रेरियों के साथ और लाइब्रेरी को हटा दें जो त्रुटियां दिखाती हैं क्योंकि वह लाइब्रेरी प्रोजेक्ट फ़ोल्डर में उपलब्ध नहीं है


इससे मेरी विशेष समस्या ठीक हो गई। मेरे पास दो समान नाम वाले पुस्तकालय थे, एक का नाम libPods-Foo BarTests.aऔर दूसरे का नाम libPods-FooBarTests.a
एडवेंथ

9

यदि आप कार्यक्षेत्र के बजाय प्रोजेक्ट फ़ाइल खोलते हैं तो यह भी हो सकता है। मैंने खुद को इस तरह से एक दिन की तरह बर्बाद किया है।


1
उत्कृष्ट, मैंने कार्यक्षेत्र को बंद करते समय पॉड अपडेट भी किया, फिर पॉड अपडेट समाप्त होने के बाद इसे खोला
Badr

5

उत्तर के लिए देर हो रही है लेकिन यहां उन चीजों की सूची है जो मैंने कोशिश की थी। यदि यह समस्या को ठीक करने की कोशिश करना चाहता है तो यह एक ही स्थान पर होगा।

  1. मान्य वास्तुकला = कवच v भुजा v
  2. केवल सक्रिय वास्तुकला का निर्माण करें
  3. लक्ष्य -> ​​सेटिंग बनाएँ -> अन्य लिंकर झंडे = $ (विरासत में मिला)
  4. लक्ष्य -> ​​सेटिंग बनाएँ -> लाइब्रेरी खोज पथ = $ (विरासत में मिला)
  5. उत्पाद साफ
  6. टर्मिनल में पॉड अपडेट

2

मेरे मामले में एक नामकरण मुद्दा था। मेरे पुस्तकालय बुलाया गया था ios-admob-mm-adapter.a, लेकिन Xcode उम्मीद है कि नाम उपसर्ग साथ शुरू करना चाहिए lib । मैंने अपना नाम बदल दिया हैlibios-admob-mm-adapter.a इस मुद्दे को ठीक कर लिया है।

मैं कोकोपोड्स का उपयोग करता हूं, और यह मेरे लक्ष्य की सेटिंग में अन्य लिंकर झंडे विकल्प के साथ पुस्तकालयों को जोड़ता है । झंडा दिखता है-l"ios-admob-mm-adapter"

आशा है कि यह किसी और की मदद करता है


2

बस, GoogleAdMobAds.aपरियोजना लक्ष्य में गायब है। मेरे लिए यह libAdIdAccessLibrary.aकृपया संलग्न स्क्रीनशॉट की जाँच करें

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


2

मेरे लिए यह समस्या इसलिए है क्योंकि मैंने IOS के लिए सामग्री पुस्तकालय स्थापित किया है। इस मुद्दे को हल

1: अपने लक्ष्य ऐप की बिल्ड सेटिंग्स पर जाएं ।

2: अन्य लिंकर झंडे के लिए खोजें

3: अन्य लिंकर झंडे को खोलें और लाइब्रेरी के लिए जांचें जो त्रुटि में वर्णित है।

4: उस झंडे को हटा दें।

5: स्वच्छ और निर्माण।

मुझे उम्मीद है कि यह आपके मुद्दे को ठीक करेगा।


2

ld: library not found for -{LIBRARY_NAME}ऐसा होने की स्थिति में क्योंकि लाइब्रेरी फ़ाइल (एस) मौजूद नहीं है।

अपने एप्लिकेशन लक्ष्य 'लाइब्रेरी चरण बनाएँ' लाइब्रेरी खोज पथ टैब पर लाइब्रेरी पथ की जाँच करें।

पुस्तकालय फ़ाइल (ओं) का पथ उदाहरण के लिए वास्तविक पथ के अनुसार होना चाहिए यदि आपकी फ़ाइल (परियोजनाएं) उस परियोजना की जड़ में है जिसे आपको रास्ता निर्धारित करना चाहिए $(PROJECT_DIR)


1

मुझे पता है कि यह थोड़ा पुराना है, लेकिन मैं सिर्फ एक ही मुद्दे पर हिट करता हूं और 'पॉड अपडेट' चला रहा हूं। मेरे पुस्तकालय त्रुटि AFNetworking के साथ था ...

यदि आप अपनी पॉड फ़ाइल में स्पष्ट संस्करणों का उपयोग नहीं करते हैं तो बस पॉड अपडेट करने में सावधानी बरतें।


1

यह त्रुटि बहुत ही अजीब है।

मुझे -AldAfnetworking के साथ यह त्रुटि आई थी और मैं केवल अपनी परियोजना को अन्य पथ और कार्यों में कॉपी करता हूं।


1

मैंने अपने बिल्ड कॉन्फ़िगरेशन Releaseका नाम बदलने की कोशिश की Production, लेकिन जाहिर तौर पर कोको की फली को यह पसंद नहीं है। मैंने इसे फिर से नाम दिया Release, और सब कुछ ठीक-ठाक बना।


तुम भी podfile में लक्ष्य का नाम बदल सकता है।
रोमेन टेललैंडलैंड

1

@ रौरा के जवाब ने मुझे सही दिशा में इशारा किया। मैं अपने "वॉचटाकैप एक्सटेंशन / लिब" पथ में पुस्तकालयों को शामिल कर रहा था। इस मामले में, लाइब्रेरी खोज पथ को '\' के साथ भागने की आवश्यकता थी, लेकिन लिंकर को यह समझ में नहीं आया। समस्या को ठीक करने / काम करने के लिए, मैंने अपने काम को एक स्तर तक बढ़ा दिया, इसलिए यह अब उस निर्देशिका में नहीं था जिसमें नाम का स्थान था।


1

मैं बस पॉड फ़ाइल 'पॉड अपडेट' को अपडेट करता हूं और यह मेरे लिए सामान्य रूप से काम करना शुरू कर देता है।


1

मेरी परियोजना में 'पॉड अपडेट' चलाने से 'लाइब्रेरी के लिए -lSTPopup त्रुटि नहीं' के साथ मेरी समस्या ठीक हो गई।

ट्रेवर पन्हर्स्ट का जवाब:

"यदि आप अपनी पॉड फ़ाइल में स्पष्ट संस्करणों का उपयोग नहीं करते हैं तो बस पॉड अपडेट करने में सावधानी बरतें।"


1

आसान समाधान। यहां बताया गया है कि मैं इस मुद्दे को कैसे हल करूंगा:

  1. निर्देशिका में जाओ platforms/ios
  2. फिर, कमांड निष्पादित करें pod install

बस। यह लापता पुस्तकालय स्थापित करना चाहिए।


1
  1. क्लीन बिल्ड बिल्ड फोल्डर
  2. XCode को पुनरारंभ किया गया

चला गया...


1

यह Static Libraryउस कारण से संकलित समय त्रुटि हैStatic Linker

ld: library not found for -l<Library_name>
  1. Library not found forलाइब्रेरी पथ को शामिल नहीं करने पर आपको त्रुटि मिल सकती हैLibrary Search Paths

    ldका मतलब है Static Linkerजो पुस्तकालय का एक स्थान नहीं मिल सकता है। एक डेवलपर के रूप में आपको लिंकर की मदद करनी चाहिए और इंगित करना चाहिएLibrary Search Paths

    Build Settings -> Search Paths -> Library Search Paths 
  2. यदि आप पहली बार .xcodeprojCocoapods समर्थन के साथ एक नई परियोजना ( ) खोलते हैं, तो भी आपको यह त्रुटि मिल सकती है pod update। इसे ठीक करने के लिए इस परियोजना को बंद करें और इसके बजाय एक कार्यक्षेत्र बनाया ( .xcworkspace)


0

मुझे लाइब्रेरी में ऐसे ही कीड़े मिल रहे थे जो नहीं मिले। अंततः यह है कि मैं इसे कैसे हल करने में सक्षम था

  1. Xcode संग्रह के साथ शुरू करने से पहले, इस्तेमाल किया गया स्पंदन बिल्ड iOS
  2. IOS तैनाती लक्ष्य को एक उच्च लक्ष्य iOS 11.2 में बदल दिया। पहले मेरे पास 8.0 जैसा कुछ था जो उपरोक्त सभी त्रुटियों को दे रहा था।
  3. सुनिश्चित करें कि Xcode में IOS परिनियोजन लक्ष्य परियोजना, लक्ष्य और पॉड्स में समान हैं
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.