2015-06-01 4 views
27

होगा मेरे पास एक प्रोजेक्ट है जिसमें सॉकेटरोकेट का उपयोग करके निर्भरता (कोकोपोड्स के माध्यम से स्थापित) है और हेपएनालिटिक्स से एक स्थिर लाइब्रेरी आयात की है। स्पष्ट रूप से हेपएनालिटिक्स लाइब्रेरी पहले से ही सॉकेटरोकेट का उपयोग करती है। मैं जब संकलन कोई त्रुटि मिलती है, लेकिन क्रम में निम्नलिखित प्राप्त करते हैं:कक्षा दोनों में लागू किया गया है। दोनों में से एक का उपयोग

Class SRWebSocket is implemented in both [path] and [path]. 
One of the two will be used. Which one is undefined. 

मैं इसे कैसे संभाल करने के लिए है क्योंकि ज्यादातर समाधान मैंने देखा है स्थिर पुस्तकालय खुद के वर्ग के नाम और इस तरह बदल संकलन आवश्यकता यकीन नहीं है, और मेरे पास स्रोत तक पहुंच नहीं है।

कोई सिफारिशें?

+0

मुझे लगता है कि आपको सीधे 'सॉकेट रॉकेट' के खिलाफ लिंक करना बंद करना होगा और इसके बजाय 'हेपएनालिटिक्स' के साथ निहित एक पर भरोसा करना होगा। – Droppy

+6

आप कोकोपोड्स के माध्यम से सेट की गई किसी चीज़ की निर्भरता के रूप में स्थापित किसी चीज़ के विरुद्ध लिंक करना बंद कैसे करते हैं? – MrGrinst

उत्तर

34

मुझे लगता है कि त्रुटि संदेश लिखा है! •

या तो वर्ग के नाम बदलने के लिए या कहा पुस्तकालय के खिलाफ लिंक न करें।

आपकी प्रोजेक्ट कैसे कॉन्फ़िगर की गई है? क्या वहां कहीं भी है जहां आप एसआर के खिलाफ स्पष्ट रूप से लिंक करते हैं? या यह दो स्थैतिक पुस्तकालयों के खिलाफ जोड़ने का एक उत्पाद है जो दोनों पहले से ही एसआर शामिल हैं?

यदि पूर्व है, तो एसआर के खिलाफ सीधे लिंक करना बंद करें और लाइब्रेरी के साथ पहले से ही संस्करण का उत्तराधिकारी प्राप्त करें (चेतावनी: सुनिश्चित करें कि इसका सही संस्करण है)।

यदि बाद वाला, तो आपको पुस्तकालयों में से किसी एक को संशोधित करना होगा।

• वास्तव में, मैंने त्रुटि संशोधित की। यह इंगित करता था कि एक या दूसरे का उपयोग किया जाएगा। लेकिन वास्तव में यह नहीं था कि क्या चल रहा था और विभिन्न प्लेटफार्मों में व्यवहार अलग था। इस प्रकार, यह बदल दिया गया था ताकि यह पहचानने में कहीं अधिक सटीक था कि व्यवहार अपरिभाषित था।

+1

धन्यवाद bbum। दुर्भाग्यवश, यह मेरे संदेह की पुष्टि करता है कि मुझे पुस्तकालयों में से एक को पूरी तरह से संशोधित करना होगा। – MrGrinst

+0

वैसे ठीक है मैंने सोचा था कि फिक्स बहुत आसान था। मुझे लगता है कि मैंने सोचा कि मुझे कुछ जटिल करने की ज़रूरत है, लेकिन मुझे बस इतना करना था कि रिफैक्टर -> SRWebSocket की सभी घटनाओं का नाम बदलें और यह आंतरिक कक्षाओं के साथ है। ऐसा करने में मुझे एकमात्र परेशानी हो सकती है कि यदि गैर-हेपएनालिटिक्स पुस्तकालय एसआर के एक अलग संस्करण का उपयोग कर रहे हैं, तो कुछ समस्याएं हो सकती हैं। – MrGrinst

+0

@MrGrinst उत्कृष्ट! हाँ - ओबीजेसी में नामस्थानों की वास्तव में कोई धारणा नहीं है और इस प्रकार, इस तरह के टकराव समस्याग्रस्त हैं। – bbum

0

मेरे मामले में यह त्रुटि दिखाई दिया जब मैं अनावश्यक रूप से दोनों अपने मुख्य अनुप्रयोग लक्ष्य के लिए एक स्रोत फ़ाइल और अपने परीक्षण लक्ष्य कहा:

:

Target Membership with both targets selected

Target Membership से परीक्षण लक्ष्य निकाल रहा है इसे हल Target Membership with only one target selected

संबंधित मुद्दे

 संबंधित मुद्दे