dyld: Library not loaded: @rpath/libswiftCore.dylib त्रुटि कैसे ठीक करें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

«ऐप क्रैश हुआ और आप हैरान?»: dyld: Library not loaded: @rpath/libswiftCore.dylib को समझें

\n\n

क्या आपने कभी अपना Swift ऐप लॉन्च किया, एक सुंदर स्प्लैश स्क्रीन देखी, और फिर — धम! — काली स्क्रीन और कंसोल में लाल अक्षर? परिचित लग रहा है? अगर आपने कभी dyld: Library not loaded: @rpath/libswiftCore.dylib संदेश देखा है, तो आप उस हल्की घबराहट को जानते हैं। Stack Overflow पर इस सवाल के हज़ारों व्यूज़ हैं, और यह सही भी है: यह त्रुटि मुश्किल है, लेकिन पूरी तरह हल करने योग्य है।

\n\n

इस लेख में हम सिर्फ एक सूखी गाइड नहीं देंगे। हम समझेंगे कि Swift लाइब्रेरीज़ रनटाइम में क्यों «खो» जाती हैं, इससे कैसे बचें, और अगर आप पहले ही इस समस्या में फंस गए हैं तो क्या करें। चलिए शुरू करते हैं!

\n\n

dyld क्या है और यह क्यों गुस्सा होता है?

\n\n

dyld (dynamic link editor) macOS और iOS में डायनामिक लाइब्रेरीज़ का लोडर है। जब आपका ऐप शुरू होता है, dyld बाइनरी में बताए गए पथों पर सभी ज़रूरी लाइब्रेरीज़ खोजता है। ऐसा ही एक पथ है @rpath (runtime search path)। अगर लाइब्रेरी (जैसे libswiftCore.dylib) इस पथ पर नहीं मिलती, तो dyld त्रुटि के साथ क्रैश हो जाता है।

\n\n

सीधे शब्दों में: आपने ऐप से कहा «@rpath शेल्फ से किताब ले आओ», और शेल्फ खाली थी। बस इतनी सी बात है।

\n\n

यह खासतौर पर libswiftCore.dylib के साथ क्यों होता है?

\n\n

libswiftCore.dylib Swift runtime का मूल है। इसके बिना कोई भी Swift कोड काम नहीं करता। यह त्रुटि आमतौर पर तीन मामलों में होती है:

\n\n
    \n
  • आप Xcode 14+ का उपयोग कर रहे हैं और प्रोजेक्ट Swift के पुराने वर्जन पर सेट है।
  • \n
  • आप फ्रेमवर्क या CocoaPods जोड़ रहे हैं जिन्हें Swift runtime के एक खास वर्जन की ज़रूरत है।
  • \n
  • आप बिल्ड सेटिंग्स में «Always Embed Swift Standard Libraries» को चालू करना भूल गए।
  • \n
\n\n

dyld: Library not loaded: @rpath/libswiftCore.dylib को ठीक करने के 5 तरीके

\n\n

अब प्रैक्टिकल पर आते हैं। नीचे सिद्ध तरीके दिए गए हैं, सरल से जटिल तक। प्रत्येक के लिए मैं कोड या सेटिंग्स का उदाहरण दूंगा।

\n\n

1. «Always Embed Swift Standard Libraries» चालू करें

\n\n

सबसे आम कारण। अगर आपका ऐप Swift लाइब्रेरीज़ को बंडल में एम्बेड नहीं करता, तो dyld उन्हें डिवाइस पर नहीं ढूंढ पाएगा।

\n\n

कैसे ठीक करें:

\n
    \n
  1. Xcode में प्रोजेक्ट खोलें।
  2. \n
  3. Target → Build Settings चुनें।
  4. \n
  5. Always Embed Swift Standard Libraries ढूंढें।
  6. \n
  7. इसका मान Yes सेट करें।
  8. \n
\n\n

अगर आप CocoaPods का उपयोग कर रहे हैं, तो जांचें कि Podfile में इस व्यवहार को बंद करने वाली कोई लाइन तो नहीं है:

\n\n
# बुरा (त्रुटि पैदा कर सकता है)\npost_install do |installer|\n  installer.pods_project.targets.each do |target|\n    target.build_configurations.each do |config|\n      config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'NO'\n    end\n  end\nend\n\n# अच्छा\npost_install do |installer|\n  installer.pods_project.targets.each do |target|\n    target.build_configurations.each do |config|\n      config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'YES'\n    end\n  end\nend\n
\n\n

2. Swift वर्जन की संगतता जांचें

\n\n

अगर आपने Swift 5.7 के लिए बना फ्रेमवर्क जोड़ा है, लेकिन आपका प्रोजेक्ट Swift 5.5 पर है — तो त्रुटि आएगी। Swift runtime 100% पिछड़ा संगत नहीं है।

\n\n

समाधान: सुनिश्चित करें कि सभी डिपेंडेंसीज़ एक ही Swift वर्जन का उपयोग करें। टर्मिनल खोलें और यह चलाएं:

\n\n
# किसी विशेष .framework के लिए Swift वर्जन पता करें\nstrings MyFramework.framework/MyFramework | grep "Swift"\n# या xcrun के ज़रिए जांचें\nxcrun swift --version\n
\n\n

अगर फ्रेमवर्क दूसरे वर्जन के लिए बना है — उसे फिर से बनाएं या अपडेट करें।

\n\n

3. Derived Data साफ़ करें और प्रोजेक्ट फिर से बनाएं

\n\n

कभी-कभी Xcode लाइब्रेरीज़ के पुराने पथों को कैश कर लेता है। पूरी तरह से रीबिल्ड करने से अक्सर समस्या हल हो जाती है।

\n\n
# Derived Data को मैन्युअल हटाएं\nrm -rf ~/Library/Developer/Xcode/DerivedData                

ब्लॉग

पुस्तक अनुशंसाएँ