ios - आर्किटेक्चर arm64 के लिए अपरिभाषित प्रतीकों




xcode xcode5 (20)

जब भी मैं कोकोपोड्स से एक फाइल आयात करता हूं तो मुझे ऐप्पल मैक-ओ लिंकर त्रुटि मिल रही है।

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FBSession", referenced from: someFile
ld: symbol(s) not found for architecture arm64

मैं उन विभिन्न पॉड्स के लिए इनमें से 12 प्राप्त करता हूं।

मैं एक्सकोड 5 का उपयोग कर आईफोन 5 एस के लिए निर्माण करने की कोशिश कर रहा हूं।

मैं यहां SO पर विभिन्न समाधानों का प्रयास कर रहा हूं, लेकिन उनमें से कोई भी अभी तक काम करने के लिए नहीं मिला है।

मैं इस ऐप्पल मैक-ओ लिंकर त्रुटि को कैसे ठीक करूं?

बस एक और चेतावनी मिली जो दिलचस्प हो सकती है, मुझे आशा है कि इससे मुझे समाधान मिल जाएगा:

Ignoring file ~/Library/Developer/Xcode/DerivedData/SomeApp/Build/Products/Debug-iphoneos/libPods.a, 

file was built for archive which is not the architecture being linked (arm64):~/Library/Developer/Xcode/DerivedData/someApp/Build/Products/Debug-iphoneos/libPods.a


  1. बिल्ड सेटिंग्स लक्ष्य पर जाएं।
  2. डीबग और रिलीज दोनों के लिए केवल सक्रिय आर्किटेक्चर सेट = NO सेट करें
  3. बनाएं और चलाएं

"Security.framework" को जोड़ना मेरे लिए चाल था।


64-बिट सिम्युलेटर और रेटिना आईपैड मिनी दोनों के लिए एक्सकोड 5.1 पर त्रुटियों के बिना GPUImage संकलन प्राप्त करने के लिए निम्नलिखित काम किया, बिना वैध आर्किटेक्चर सूची से arm64 को हटाने की आवश्यकता के बिना (जो परीक्षण के लिए 64-बिट डिवाइस के मालिक के उद्देश्य को हरा देता है 64-बिट प्रदर्शन)।

गिटहब पेज से .zip फ़ोल्डर डाउनलोड करें: https://github.com/BradLarson/GPUImage

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

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

एक बार जब आप अपनी परियोजना में स्रोत फ़ोल्डर जोड़ चुके हैं तो GPUImage के वर्ग / विधियों का उपयोग शुरू करने के लिए बस निम्न का उपयोग करें:

#import "Source/GPUImage.h" 

कुछ बातें इंगित करने के लिए:

  • अगर आपको 'कोको' नहीं मिला है, तो आपको मैक फ़ोल्डर / शीर्षलेखों को आपके आईओएस प्रोजेक्ट में जोड़ा गया है - बस अपने प्रोजेक्ट से मैक समूह / फाइलों को हटा दें और चेतावनी गायब हो जाएगी
  • यदि आप स्रोत फ़ोल्डर का नाम बदलते हैं (एक्सकोड में समूह नहीं), तो #import निर्देश में "स्रोत / GPUImage.h" के बजाय उस नाम का उपयोग करें। इसलिए यदि आप अपनी परियोजना में जोड़ने से पहले GPUImageFiles में फ़ोल्डर का नाम बदलते हैं, तो इसका उपयोग करें: #import "GPUImageFiles / GPUImage.h
  • स्पष्ट रूप से सुनिश्चित करें कि ए 7 64-बिट प्रोसेसर का लाभ उठाने के लिए मान्य आर्किटेक्चर सूची में arm64 का चयन किया गया है!
  • यह एक GPUImage.framework बंडल नहीं है (जैसे कि आपने http://www.raywenderlich.com/60968/ios-7-blur-effects-gpuimage से ढांचे को डाउनलोड किया है) तो GPUImage का उपयोग करने का सही तरीका नहीं हो सकता है कि ब्रैड लार्सन का इरादा है, लेकिन यह मेरे वर्तमान स्प्राइटकिट परियोजना के लिए काम करता है।
  • ढांचे / पुस्तकालयों आदि से लिंक करने की कोई आवश्यकता नहीं है - ऊपर वर्णित अनुसार हेडर और कार्यान्वयन स्रोत फ़ोल्डर आयात करें

उम्मीद है कि उपर्युक्त मदद करता है - ऐसा लगता है कि सवाल कई बार पूछे जाने के बावजूद कहीं भी स्पष्ट निर्देश नहीं थे, लेकिन डर नहीं, GPUImage निश्चित रूप से arm64 आर्किटेक्चर के लिए काम करता है!


DerivedData -> Build -> Products -> डीबग-आईफोनोस की सामग्री को हटाने के बाद हल किया गया


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

OTHER_LDFLAGS = $(inherited) -ObjC -l"Pods-AWSAutoScaling" -l"
Pods-   AWSCloudWatch" -l"Pods-AWSCognito" -l"Pods-AWSCore" -l
"Pods-AWSDynamoDB" -l"Pods-AWSEC2" -l"Pods-AWSElasticLoadBalancing" 
-l"Pods-AWSKinesis" -l"Pods-AWSLambda" -l"Pods-AWSMachineLearning" 
-l"Pods-AWSS3" -l"Pods-AWSSES" -l"Pods-AWSSNS" -l"
Pods-AWSSQS"-l "Pods-AWSSimpleDB" -l"Pods-Bolts" -l"Pods-FMDB" 
-l"Pods-GZIP" -l"Pods-Mantle" -l"Pods-Reachability" -l"Pods-TMCache" 
-l"Pods-UICKeyChainStore" -l"Pods-XMLDictionary" -l"sqlite3" -l
"z"-framework "Accelerate" -framework "AssetsLibrary" 
-framework "CoreLocation" -framework "Foundation" -framework
"ImageIO" -framework "Security" -framework "SystemConfiguration"
-framework "UIKit" -weak_framework "UIKit"
 OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)   

अगर आपकी कॉन्फ़िगरेशन फ़ाइल ठीक से काम नहीं कर रही है तो अपने अन्य लिंकर ध्वज को $ (विरासत में) सेट करें


एक आईफोन 5 एस को देखते हुए और अभी तक किसी तीसरे पक्ष की लाइब्रेरी का 64 बिट संस्करण प्राप्त नहीं हुआ है, मुझे नवीनतम एक्सकोड के साथ 32 बिट मोड पर वापस जाना पड़ा (5.1 से पहले यह शिकायत नहीं करता था)।

मैंने वैध आर्किटेक्चर सूची से arm64 को हटाकर और फिर बिल्ड एक्टिव आर्किटेक्चर को केवल NO पर सेट करके इसे ठीक किया। ऐसा लगता है कि यह ऊपर दिखाए गए अनुसार अन्य तरीकों से अधिक समझ में आता है। मैं पोस्ट कर रहा हूं अगर अन्य लोगों को उनके लिए काम करने के लिए उपरोक्त समाधानों में से कोई भी नहीं मिल सका।


जैसा कि morisunshine जवाब सही दिशा में इंगित किया गया है, उसके जवाब में थोड़ा चिमटा आईओएस 8.2 के लिए मेरी समस्या हल हो गया। उसे धन्यवाद।

मैंने यह समस्या हल करके हल की:

ARCHS = armv7

VALID_ARCHS = armv6 armv7 armv7s arm64

BUILD ACTIVE ARCHITECTURE ONLY= NO

पूरे दिन इस मुद्दे पर फंस गया था।

मेरे पास कई योजनाएं थीं, यह डेमो, आंतरिक, रिलीज के लिए जुर्माना संकलित कर रही थी - हालांकि डीबग योजना सिर्फ संकलित नहीं होगी और libPods.a के बारे में शिकायत कर रही थी।

समाधान परियोजना -> लक्ष्य -> ​​बिल्ड सेटिंग्स पर जाना था और YES को "केवल सक्रिय आर्किटेक्चर बनाएं" बदलें। स्वच्छ और निर्माण! अंत में सिर खुजली के घंटे हल हो गया!


मुझे पता है कि यह एक पुरानी शाखा है। हालांकि, नवीनतम कोकोपोड संस्करण (1.0.0) में माइग्रेट करने और सभी फली को पुनर्स्थापित करने का प्रयास करने के बाद भी यही समस्या हो रही है। मुझे "armv64 के लिए गुम प्रतीकों" लिंकर त्रुटि का सामना करना पड़ा। विचित्र रूप से पर्याप्त, मैंने इसे निम्नलिखित चरणों का पालन करके हल किया:

  1. सभी फली निकालें (पॉड इनिट, पॉड इंस्टॉल)

  2. एक उल्टा क्रम में पॉडफ़ाइल को फिर से लिखें (इसके बजाय: पॉड "मिक्सपैनेल", पॉड "इंटरकॉम", मैंने उपयोग किया: पॉड "इंटरकॉम", पॉड "मिक्सपैनेल")

  3. पॉड इंस्टॉल करें

पॉडफाइल में निर्भरताओं के क्रम को उलटाने और फली का पुनर्निर्माण करने से समस्या हल हो गई है।


मुझे भी एक ही समस्या का सामना करना पड़ा, उपर्युक्त तरीके काम नहीं करेंगे। मैंने गलती से फाइलों को निम्न निर्देशिका में हटा दिया।

फ़ोल्डर प्रतिस्थापन:

~ / Library / डेवलपर / Xcode / DerivedData /


मेरे मामले में, मुझे देखना था

C++ Standard Library और सुनिश्चित करें कि libc++ एक चुना गया था।


मेरे लिए, मैं आईओएस के लिए xcode 7.2 में opencv 2.4.9 का उपयोग करता हूं और ऊपर की त्रुटियां हुईं, और मैं ओपनसीवी का उपयोग ऑफ़लाइन ओपनसीवी फ्रेमवर्क के बजाय पॉड इंस्टॉल के माध्यम से करता हूं।

यदि आप उपयोग करते हैं तो आप ओपनसीवी पॉड टेक्स्ट को नीचे जोड़कर ऑफ़लाइन ओपनसीवी फ्रेमवर्क को जोड़कर कोशिश कर सकते हैं।

पॉड 'ओपनसीवी', '2.4.9'


मैंने इसे armv7 armv7s में मान्य आर्क सेट करके हल किया और केवल रिलीज में YES के लिए सक्रिय आर्किटेक्चर बनाने और कमांड लाइन से नया "पॉड इंस्टॉल" करने की स्थापना की।


मैंने यह समस्या हल करके हल की:

ARCHS = armv7 armv7s

VALID_ARCHS = armv6 armv7 armv7s arm64


यदि आपके आर्किटेक्चर और मान्य आर्किटेक्चर ठीक हैं, तो आप जांच सकते हैं कि आपने $(inherited) जोड़ा है, जो फोड में जेनरेट किए गए लिंकर झंडे को जोड़ देगा, अन्य लिंकर ध्वज नीचे दिए गए हैं:


यदि आर्किटेक्चर और लिंकर सेटिंग्स अच्छी लगती हैं, तो अपनी एच फाइलों की जांच करें। मेरी समस्या एक ही त्रुटि थी, लेकिन मैंने एच फाइलों का पुनर्गठन किया था और मैंने एक बाहरी कथन हटा दिया था। अन्य एम फाइलें उस चर का उपयोग कर रही थीं, जिससे लिंकर त्रुटि उत्पन्न हुई थी।


यह मेरे लिए काम किया:

आईओएस एसडीके 9.3

app.xcodeproj मान्य आर्किटेक्चर की अपनी बिल्ड सेटिंग में : armv7 armv7s सक्रिय आर्किटेक्चर बनाएं: नहीं

स्वच्छ और निर्माण, मेरे लिए काम किया।


यह समाधान एकमात्र चीज है जो मेरे लिए काम करती है: कॉर्डोवाइब सेटिंग्स पर जाएं और वैध आर्किटेक्चर में arm64 जोड़ें।


समाधानों में से कोई भी मेरे मामले में इस त्रुटि को ठीक नहीं करता है (Xcode 9), TesseractOCRiOS साथ। परीक्षण और त्रुटि के घंटों के बाद, मैं एक अच्छे समाधान के साथ आया था। मैं सिर्फ Podfile में 'pod 'TesseractOCRiOS', '~> 4.0.0' Podfile , pod install चलाता Podfile । और फिर, Podfile pod 'TesseractOCRiOS', '~> 4.0.0' Podfile pod 'TesseractOCRiOS', '~> 4.0.0' वापस Podfile और फिर से pod install करें।

बैंग! यह काम करता हैं!


Armv7 armv7s के लिए आर्किटेक्चर सेट करें, परियोजना में प्रत्येक लक्ष्य के लिए केवल सक्रिय आर्किटेक्चर बनाएं , पॉड में प्रत्येक सहित







cocoapods