2013-07-29 9 views
7

मुझे तीसरे पक्ष के घटक का उपयोग करने के लिए एक्सकोड में "अन्य लिंकर ध्वज" में -ओबीजेसी ध्वज शामिल करने की आवश्यकता है।-ObjC लिंकर ध्वज डुप्लिकेट प्रतीक त्रुटियों का कारण बनता है

duplicate symbol _OBJC_IVAR_$_GAI.defaultTracker_ in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAI.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAI.o) 
    duplicate symbol _OBJC_IVAR_$_GAI.dispatcher_ in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAI.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAI.o) 
... 
    duplicate symbol _OBJC_CLASS_$_GAIDispatcher in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAIDispatcher.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAIDispatcher.o) 
    duplicate symbol _OBJC_METACLASS_$_GAIDispatcher in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAIDispatcher.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAIDispatcher.o) 
    ld: 212 duplicate symbols for architecture armv7s 

फिर, यह सब गायब हो जाता है अगर मैं -ObjC ध्वज का उपयोग नहीं करते: हालांकि, एक बार मैं इस ध्वज जोड़ने के लिए, मैं त्रुटियों कि इस तरह दिखेगा के एक धसान मिलता है। ऐसा लगता है कि Google Analytics लाइब्रेरी के साथ कुछ करना है। मैं इसके आसपास कैसे पहुंचू?

+2

लगता है कि आपके डिबग और गूगल एनालिटिक्स पुस्तकालय – nielsbot

+0

के सामान्य संस्करण सच _both_ को शामिल किया है, लेकिन deb जाहिर तौर पर डीबगिंग के लिए पुस्तकालय की आवश्यकता है। जब मैं -ओबीजेसी ध्वज का उपयोग नहीं करता हूं तो मुझे इन त्रुटियों को नहीं मिलता है। – soleil

उत्तर

7

अपने निर्माण लक्ष्य की रिलीज और डीबग कॉन्फ़िगरेशन संपादित करें। डीबग कॉन्फ़िगरेशन में लाइब्रेरी का डीबग संस्करण, और रिलीज लक्ष्य के लिए गैर-डीबग संस्करण शामिल करें। दोनों को एक ही कॉन्फ़िगरेशन में शामिल न करें - यही कारण है कि आपको डुप्लिकेट प्रतीकों मिल रहे हैं।

, अपने निर्माण लक्ष्य से दो पुस्तकालयों निकालें जैसे:

remove libraries from build targets

फिर "अन्य लिंकर झंडे" अपने निर्माण लक्ष्य की सेटिंग में के लिए खोज और डीबग config और "के लिए" -lGoogleAnalytics_debug "जोड़ - रिलीज config के लिए lGoogleAnalytics ", जैसे:

set linker flags for debug and release configs

+0

मैं libGoogleAnalytics_debug.a को केवल डीबग कॉन्फ़िगरेशन में शामिल करने के लिए कैसे सेट कर सकता हूं? – soleil

+0

मुझे लगता है कि लाइब्रेरी वेरिएंट को नियंत्रित करने के लिए एक बिल्ड सेटिंग है ... (लेकिन केवल गतिशील रूप से लोड की गई लाइब्रेरीज़ के लिए काम कर सकती है) – nielsbot

+0

आप लाइब्रेरी बिल्ड चरण से लाइब्रेरी को हटाने का प्रयास कर सकते हैं, फिर "अन्य लिंकर ध्वज" (__OTHER_LDFLAGS__) सेटिंग का उपयोग कर सकते हैं उचित __libGoogleAnalytics__ – nielsbot

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

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