ios - फ़ाइल सार्वभौमिक(तीन स्लाइस) है, लेकिन इसमें आईओएस पर स्थैतिक पुस्तकालयों के लिए एआरएमवी 7-एस स्लाइस त्रुटि नहीं है, वैसे भी बाईपास करने के लिए?




objective-c xcode (6)

मैंने Xcode संस्करण को अपग्रेड किया और बाहरी स्थैतिक पुस्तकालयों का उपयोग करते समय, मुझे यह संदेश मिलता है:

ld: फ़ाइल सार्वभौमिक (3 स्लाइस) है लेकिन इसमें (n) armv7s स्लाइस नहीं है: / आर्किटेक्चर armv7s clang के लिए फ़ाइल / स्थान: त्रुटि: लिंकर कमांड निकास कोड 1 के साथ विफल रहा (उपयोग -v को देखने के लिए उपयोग करें)

क्या लाइब्रेरी के डेवलपर ने अभी तक अपनी लाइब्रेरी अपडेट नहीं की है, तो इसे बाईपास करने और लाइब्रेरी में समर्थन जोड़ने का कोई तरीका है?


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

आशा करता हूँ की ये काम करेगा।


आईओएस 5.1 फोन के लिए इस मुद्दे से रिलीज करने के लिए प्रोजेक्ट के "वैध आर्किटेक्चर" से armv7s को हटाने का प्रयास करें


मेनू का उपयोग करें परियोजना -> सेटिंग्स बनाएं ->

फिर "वैध आर्किटेक्चर" से armv7s को हटा दें। यदि मानक चुना गया है तो उसे हटाएं और फिर armv7 जोड़ें।


मेरे मामले में, मैं एक थर्ड-पार्टी लाइब्रेरी से लिंक कर रहा था जो थोड़ा पुराना था (आईओएस 6 के लिए विकसित, एक्सकोड 5 / आईओएस 7 पर)। इसलिए, मुझे तीसरे पक्ष की लाइब्रेरी को अपडेट करना था, एक स्वच्छ और बिल्ड करना था, और अब यह सफलतापूर्वक बनाता है।


मैंने लक्ष्य की बिल्ड सेटिंग्स में "हां" को "केवल सक्रिय आर्किटेक्चर बनाएं" को टॉगल किया है, और यह अभी ठीक है!


यदि आप किसी भी आर्किटेक्चर के लिए समर्थन को हटाना चाहते हैं, उदाहरण के लिए, आपके मामले में ARMv7-s , मेनू प्रोजेक्ट -> बिल्ड सेटिंग्स -> "वैध आर्किटेक्चर" से आर्किटेक्चर को हटाएं।

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

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





static-libraries