वास्तुकला arm64 के लिए डुप्लिकेट प्रतीक


103

जब मैं अपना Xcode प्रोजेक्ट चलाने की कोशिश करता हूं तो यह एक त्रुटि के साथ विफल होता है जिसमें कहा गया है कि मेरे पास डुप्लिकेट प्रतीक हैं। मैंने ऑनलाइन देखा जहां ये डुप्लिकेट मिलते हैं, लेकिन कोई भाग्य नहीं है:

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

इसे ठीक करने का कोई तरीका?


1
इसका मतलब है कि आपने बहुत अधिक BFAppLinkReturnToRefererView
एंड्री

इसके अलावा, आप अपने डेस्कटॉप पर बैठे चौखटे को जोड़ने के बजाय अपनी परियोजना को थोड़ा साफ करना चाह सकते हैं। :)
picciano

मेरे मामले में मैंने एक्सटर्नल NSString * const tColor जोड़ा है; , .h फ़ाइल और NSString कॉन्स्ट * tColor = @ "# 000022"; दो अलग-अलग वर्गों में।
Ios_dev

आप पा सकते हैं कि आप यहाँ क्या देखते हैं stackoverflow.com/a/46678210/988941
MoOx

जवाबों:


65

त्रुटियों से, ऐसा प्रतीत होगा कि FacebookSDK.framework में पहले से ही Bolts.framework कक्षाएं शामिल हैं। प्रोजेक्ट से अतिरिक्त Bolts.framework को निकालने का प्रयास करें।


22
कैसे? क्या आप कृपया मुझे कदम दर कदम मार्गदर्शन कर सकते हैं
इमदाद अली

68

मेरे लिए यह NO के लिए "नो कॉमन ब्लॉक्स" कंपाइलर सेटिंग को स्विच करने में मदद करता है: यह बहुत समझ में आता है, सेटिंग यहाँ बताई गई है: GCC_NO_COMMON_BLOCKS किसके लिए उपयोग किया जाता है?


आप आदमी हो! बस एक नया xCode 7.3.1 प्रोजेक्ट बनाया और डिफ़ॉल्ट सेटिंग YES है :(
यारो

4
यह विकल्प मेरे लिए Xcode के "अपडेट प्रोजेक्ट टू रिकॉल सेटिंग्स" विंडो द्वारा स्विच किया गया था।
commscheck

आप सबसे अच्छा कर रहे हैं
showmyroutes

अनमोल टिप, लेकिन doh मेरे मामले में मदद नहीं की! : ओ
फेटी

49

Xcode 8 का उपयोग करते हुए, "अनुशंसित सेटिंग्स के लिए प्रोजेक्ट अपडेट करें" विकल्प ने मेरी परियोजना के लिए 'नो कॉमन ब्लॉक' चालू कर दिया।

इसे बंद करने से सब कुछ ठीक हो जाता है।


2
अनुशंसित सेटिंग्स में प्रोजेक्ट अपडेट करें, मैं यह कैसे करूं? मेरा मतलब है कि किस मेनू से?
सज्जाद हिसैन खान

@SazzadHissainKhan यह आपकी बिल्ड सेटिंग्स में है।
ट्रिप

21

मेरे लिए यह था कि मैंने एक फ़ाइल को .m के रूप में आयात किया था। यह गलती से नहीं है


यह LOL है, लेकिन सच है; D
व्लादिमीर

यह सिर्फ मेरे साथ हुआ .. मैं हर कोड के लिए कोड पूरा करने का दोष
लगाता हूं

21

मैंने फली को अपग्रेड करते समय अपनी फली को गड़बड़ कर दिया है और मैंने फली को हटाने और आर्किटेक्चर arm64 के लिए डुप्लिकेट प्रतीकों के साथ समस्या को हल करने में कामयाबी हासिल की है।

pod deintegrate
pod install

मैं Google स्थल SDK का उपयोग कर रहा था, जो CocoPods - 3.9.0 के माध्यम से एकीकृत किया गया था, और इस उत्तर ने मेरा मुद्दा ठीक कर दिया।
andrewlundy

11

एक और उपाय है:

प्रोजेक्ट का चयन करें -> टारगेट -> बिल्ड फेज -> कम्पाइल सोर्स -> उस फाइल को सर्च करें जिसका उल्लेख 3 लास्ट एरर लाइन (आपके केस में BFAppLinkReturnToRefererView.o ) में किया गया है।

फिर आपको सर्च रिजल्ट में 1 या 2 फाइल दिखाई देगी।

उनमें से एक निकालें और फिर से संकलित करें । इसे अब फिर से शुरू करना चाहिए क्योंकि निर्माण के लिए केवल एक फ़ाइल बची है और कोई अधिक संघर्ष नहीं है।

यदि वह फ़ाइल काम नहीं करती है, तो शायद उसमें त्रुटियां हैं और आपको उन सभी को हटा देना चाहिए और फिर पुन: स्थापित करना चाहिए। यह फिर से काम करना चाहिए।


2
बेहद कम जवाब, आपकी मदद के लिए धन्यवाद, लुकास! :)
patreu22 12

कोई समस्या नहीं है कि यह आपकी समस्या को हल करता है :)

10

Xcode 8 में अपग्रेड करने पर, मुझे अनुशंसित सेटिंग्स में अपग्रेड करने का संदेश मिला। मैंने स्वीकार किया और सब कुछ अपडेट किया गया। मुझे संकलन का समय मिलना शुरू हुआ:

XXXX के लिए डुप्लिकेट प्रतीक XXXX के लिए डुप्लिकेट प्रतीक XXXX के लिए डुप्लिकेट प्रतीक

कुल 143 त्रुटियां। टारगेट पर गए-> सेटिंग बनाएँ -> नो कॉमन ब्लॉक्स -> इसे NO पर सेट करें। इससे समस्या हल हो गई। मुद्दा यह था कि एकीकृत परियोजनाओं में सामान्य रूप से कोड ब्लॉक थे और इसलिए इसे संकलित करने में सक्षम नहीं था। स्पष्टीकरण यहाँ पाया जा सकता है


9

यह त्रुटि तब होती है जब लिंकर obj फ़ाइलों को लिंक करने का प्रयास कर रहा होता है। इस त्रुटि के लिए मैं सोच सकता था कि कुछ कारण हैं:

  1. डुप्लिकेट किए गए फ़ंक्शन / क्लास को प्रोजेक्ट में दो अलग-अलग स्थानों / फाइलों में परिभाषित किया गया है और उनमें से केवल एक को बिल्ड कमांड के किसी भी रूपांतर के लिए संकलित करना चाहिए था। लेकिन किसी तरह वे दोनों फाइलें आपके प्रोजेक्ट में संकलित हो गईं। इसलिए आपको अपने if-else की स्थिति या अन्य निर्भरता की जांच करने की आवश्यकता है जो आपके विशेष बिल्ड कमांड के लिए आवश्यक फ़ाइलों को संकलित करने और हटाने के लिए आवश्यक फ़ाइलों की सूची में src फाइलें जोड़ता है।

  2. डुप्लिकेट किए गए फ़ंक्शन / क्लास को प्रोजेक्ट में दो अलग-अलग स्थानों / फ़ाइलों पर गलती से परिभाषित किया गया है। गलत परिभाषा को हटा दें।

  3. अपने OBJ निर्देशिका को फिर से बनाने से पहले, अपने पिछले बिल्ड से कुछ पुरानी obj फाइलें हो सकती हैं जो इस संघर्ष का कारण हो सकती हैं।

पीएस मैं कोई विशेषज्ञ नहीं हूं, लेकिन इस तरह से मैंने इस समस्या का हल किया जब मैंने इसका सामना किया। :)


9

यदि आप Xcode 7 या 8 पर जा रहे हैं और एक बहुत पुरानी परियोजना खोल रहे हैं, तो मुझे इस समस्या का सामना करना पड़ा है:

में SomeConstFile.h

NSString * const kAConstant;

में SomeConstFile.m

NSString *const kAConstant = @"a constant";

कंपाइलर के पहले के संस्करणों ने मान लिया था कि हेडर फ़ाइल में परिभाषा कुछ बाहरी थी और SomeConstFile.h सहित सभी जगह ठीक थी।

अब आपको इन जातियों को स्पष्ट रूप से बाहरी घोषित करने की आवश्यकता है:

में SomeConstFile.h

extern NSString * const kAConstant;

1
इसके लिए धन्यवाद! एक स्थिरांक के साथ एक मुद्दे के साथ संघर्ष कर रहा था। मैं फाइल का निर्माण कर रहा था
सूंग मिन किम

1
जवाब के लिए धन्यवाद, मैं भी उसी मुद्दे का सामना कर रहा था और आपके जवाब ने मेरे लिए काम किया ...
reetu

1
धन्यवाद, मैं इस समस्या के लिए पिछले 3-4 घंटे से संघर्ष कर रहा था
सुमित कुमार साहा

9

मेरे लिए पैच वर्क नीचे .. :)

Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No

Step 2: Go to TARGETS -> Build Settings -> enable testability -> No

इसे वापस NO पर सेट करने से समस्या हल हो गई!


2
चरण 2: मेरी समस्या का समाधान किया। धन्यवाद :)
डोरल्ड

2

खैर, कुछ समय जब एसडीके जैसे एफबी या लाइब्रेरीज़ जैसे कि वुफोरिया या GoogleAnalytics का उपयोग करते हैं, तो नमूना परियोजनाओं को जोड़ने से समस्या हो सकती है कि वे पहले से ही फ्रेमवर्क और इसी तरह शामिल हैं, इसलिए आपको यह सुनिश्चित करना होगा कि आप पहले से ही शामिल किए गए प्रतीकों को मैन्युअल रूप से न दोहराएं। नमूनों में शामिल


2

मेरे लिए, इस मुद्दे को कब्जे के निर्माण की शैली थी, जो इस iOS8 तक ठीक काम करता था .. मेरे पास कुछ लाइनें थीं:

int const kView_LayoutCount = 3;

मेरी .h फ़ाइल में। एक बार कॉमन ब्लॉक को NO में सेट करने पर 636 लिंकर फाइल्स की तरह छह लाइनें। (14k + यदि हाँ)। मूल्य घोषणा और संकलन के .h के अलग होने के बाद लाइनों को स्थानांतरित कर दिया गया।

आशा है कि यह दूसरों की मदद करता है!


2

मेरे मामले में कारण बहुत मूर्ख था:

मेरे पास एक Constant.h फ़ाइल थी जहाँ मुझे मैक्रोज़ परिभाषित किया गया था। मैंने वहां NSString करने की सोची। और यह किया:

NSString const *kGreenColor = @"#00C34E";

इससे आर्किटेक्चर arm64 के लिए डुप्लिकेट सिंबल्स की समस्या पैदा हो गई और लिंकर कमांड एक्जिट कोड से फेल हो गया। 1. नस्टिंग एनएसएसट्रिंग लाइन को हटाना मेरे लिए काम कर गया।


2

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


बहुत बहुत धन्यवाद, मुझे नहीं पता था कि मैंने यह गलती की थी, मेरा सारा समय लग रहा था। धन्यवाद फिर से Sup
Supertecnoboff

1

त्रुटियों से, यह किसी भी वर्ग को कई बार दिखाई देगा। उसे हटा दें और उस कक्षाओं को हटा दें जो यह काम करेगा।

कई बार बनाने AppDelegate.h और .m फ़ाइल बनाने वाला हूँ। तो यह त्रुटि उत्पन्न होगी। सामान्य रूप से उन कक्षाओं को ढूंढें और हटा दें जो मेरे लिए ठीक काम कर रहे हैं।


1

इस समस्या को हल करने के लिए बनाएँ चरणों में जाएं और (फ़ोकस-फ़ोकस के रूप में फिर से निर्माण) (फ़ेसबुकएसकेके, यूनिटीस) और डुप्लिकेट फ़ाइल के बारे में खोजें।


0

मेरे लिए, मैंने sampleMethodViewController_A में एक विधि बनाई और ViewController_B में भी यही विधि बनाई, इससे मुझे यह त्रुटि हुई, फिर मैंने विधि का नाम ViewController_B में बदल दिया secondSampleMethod। इसने त्रुटि को ठीक कर दिया।

कोड को कम करने के लिए एक अच्छी सुविधा की तरह लगता है और कई स्थानों पर एक ही कोड की नकल नहीं करता है।

मैंने नो से कॉमन ब्लॉक्स को हां से नहीं बदलने की कोशिश की और फिर हां से नहीं की टेस्टेबिलिटी को सक्षम किया। मैंने डुप्लिकेट फ़ाइलों की जाँच भी चरणों के निर्माण में की, लेकिन कोई डुप्लिकेट फ़ाइलें नहीं हैं।


0

मुझे यह मुद्दा इसलिए मिला क्योंकि मैं एक चर के लिए अपने तरीके से किसी चर को परिभाषित कर रहा था, फिर किसी अन्य .m फ़ाइल में मैं किसी अन्य चर को विधि के बाहर उसी नाम से परिभाषित कर रहा था। यह एक वैश्विक चर नाम डुप्लिकेट समस्या पैदा कर रहा था।


0

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



0

मैं इस त्रुटि को हल करने में सक्षम था, जिसमें कहा गया था "आर्किटेक्चर आर्मव 7 के लिए 158 डुप्लिकेट प्रतीक, आर्किटेक्चर आर्म 64 के लिए 158 डुप्लिकेट प्रतीक" --- यदि यह आपको भी मिल रहा है, तो इसका मतलब है कि आप एक फ़ाइल संकलित करने की कोशिश कर रहे हैं जो आयात कर रहा है या C ++ कोड या फ़ाइलों के संदर्भ में एक फ्रेमवर्क या स्थिर लाइब्रेरी विरासत में मिली। इसे संभालने का एक आसान तरीका यह होगा कि अपने .m फ़ाइल के एक्सटेंशन को .mm में बदल दें। यदि आप उद्देश्य सी का उपयोग कर रहे हैं, तो यह कैसे नियंत्रित किया जाता है, हालांकि स्विफ्ट पर यकीन नहीं है।

अपनी बिल्ड सेटिंग्स में भी - आप "अन्य लिंकर झंडे" को -lc ++ अपडेट कर सकते हैं


0

यदि कोई व्यक्ति इस कार्य को स्पंदन पर प्रयोग कर रहा है, तो फली डिनर्टग्रेट, पॉड इनिट को पॉड करने की कोशिश न करें।

मैंने कैसे हल किया, स्पंदन स्वच्छ है, स्पंदन रन-डी [आईओएस डिवाइस]

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


0

Plz सेटिंग बदलना।

चरण 1: TARGETS पर जाएं -> बिल्ड सेटिंग -> कोई सामान्य ब्लॉक नहीं -> नहीं

चरण 2: TARGETS पर जाएं -> सेटिंग बनाएँ -> परीक्षण क्षमता सक्षम करें -> नहीं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.