वास्तुकला armv7 के लिए अपरिभाषित प्रतीक


307

यह समस्या मुझे पागल कर रही है, और मैं इसे ठीक करने के लिए काम नहीं कर सकता ...

    Undefined symbols for architecture armv7:
  "_deflateEnd", referenced from:
      -[ASIDataCompressor closeStream] in ASIDataCompressor.o
  "_OBJC_CLASS_$_ASIDataDecompressor", referenced from:
      objc-class-ref in ASIHTTPRequest.o
  "_deflate", referenced from:
      -[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
  "_deflateInit2_", referenced from:
      -[ASIDataCompressor setupStream] in ASIDataCompressor.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

मुझे लगता है कि इसके साथ क्या करना है:

ld: symbol(s) not found for architecture armv7

लेकिन मैंने जोड़ा है: libz.1.2.3.dylibऔर यह मदद नहीं कर रहा है, किसी को भी कोई विचार मिला है?


किसी भी मौजूदा उत्तर में शामिल नहीं होने की एक और संभावना यह है कि आप -ObjCअन्य लिंकर ध्वज का उपयोग कर रहे हैं और इसलिए बाहरी स्थैतिक पुस्तकालयों से ओबज-सी का उपयोग कर रहे हैं जो कि दिखाई नहीं दे रहे हैं (जैसे कि पार्स से), दिखाई दे रहे हैं। यदि यह मामला है तो मेरा जवाब देखें: stackoverflow.com/a/26151208/901641
ArtOfWarfare

2
अंगूठे के एक नियम के रूप में, somethimes XCode उस तरह की त्रुटियां देता है जैसे प्रोजेक्ट में फाइल नहीं जोड़े जाने पर आर्किटेक्चर i386 (या अन्य) के लिए मैच-ओ और सिंबल नहीं मिलते हैं। यो प्रोजेक्ट फ़ोल्डर पर राइट क्लिक कर सकता है और "फाइल को <प्रोजेक्ट> में जोड़ें" कर सकता है।
फैब्रिकियो PH

आप वास्तव में एनएम उपकरण का उपयोग करके उत्पन्न किए गए ठोस प्रतीकों को देख सकते हैं। .O फ़ाइलों के पथ पर टर्मिनल, और nm -gप्रतीक को कॉल करने वाली फ़ाइल पर चलाएं और जिसके पास प्रतीक होना चाहिए, और आपको यह देखना चाहिए कि क्या वे मेल खाते हैं या नहीं, जो त्रुटि के लिए सुराग प्रदान कर सकते हैं। nm -g file.o आप इसके साथ ध्वस्त C ++ प्रतीकों का निरीक्षण कर सकते हैं: nm -gC file.o
james_alvarez

क्या यहाँ कोई मेरी मदद कर सकता है? मुझे नीचे त्रुटि मिल रही है लेकिन उपरोक्त समाधान में से कोई भी मेरे लिए काम नहीं करता है। मैंने पहले से ही सभी संभावित सेटिंग्स के साथ दिन बिताए हैं। Undefined symbols for architecture armv7: "YGConfig::YGConfig(int (*)(YGConfig*, YGNode*, YGLogLevel, char const*, void*))", referenced from: _YGConfigNew in libyoga.a(Yoga.o) ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)
लाल-शैतान

जवाबों:


506

सामान्य कारण

"वास्तुकला armv7 के लिए अपरिभाषित प्रतीक" के सामान्य कारण हैं:

  1. आप एक हेडर आयात करते हैं और सही लाइब्रेरी के खिलाफ लिंक नहीं करते हैं । यह आम है, खासकर क्वार्ट्जकोर जैसे पुस्तकालयों के हेडर के लिए क्योंकि यह डिफ़ॉल्ट रूप से परियोजनाओं में शामिल नहीं है। हल करना:

    • के Link Binary With Librariesअनुभाग में सही पुस्तकालयों को जोड़ें Build Phases

    • यदि आप डिफ़ॉल्ट खोज पथ के बाहर एक पुस्तकालय जोड़ना चाहते हैं, तो आप Library Search Pathsनिर्माण सेटिंग्स में मूल्य में पथ को शामिल कर सकते हैं और
      -l{library_name_without_lib_and_suffix}(जैसे libz.a उपयोग के लिए -lz) Other Linker Flagsअनुभाग में जोड़ सकते हैं Build Settings

  2. आप अपने प्रोजेक्ट में फ़ाइलों को कॉपी करते हैं, लेकिन फ़ाइलों को जोड़ने के लिए लक्ष्य की जांच करना भूल गए । हल करना:

  3. आप एक स्थैतिक पुस्तकालय को शामिल करते हैं जो i386 जैसी अन्य वास्तुकला के लिए बनाया गया है , आपके मेजबान मशीन पर सिम्युलेटर। हल करना:

    • यदि आपके पास अपने पुस्तकालय विक्रेता से कई पुस्तकालय फाइलें हैं, तो प्रोजेक्ट में शामिल करने के लिए आपको सिम्युलेटर (i386) के लिए एक और डिवाइस के लिए एक (उदाहरण के लिए armv7) को शामिल करना होगा।

    • वैकल्पिक रूप से, आप एक वसा स्थैतिक पुस्तकालय बना सकते हैं जिसमें दोनों आर्किटेक्चर शामिल हैं।



मूल उत्तर:

आपने सही libz फ़ाइल के खिलाफ लिंक नहीं किया है। यदि आप फ़ाइल को राइट क्लिक करते हैं और खोजक में प्रकट करते हैं तो इसका पथ एक iOS एसडीके फ़ोल्डर में कहीं होना चाहिए। यहाँ उदाहरण के लिए मेरा है

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib

मैं संदर्भ को हटाने की सलाह देता हूं और फिर इसे लिंक बाइनरी में लाइब्रेरी खंड के साथ फिर से जोड़कर अपने लक्ष्य के चरणों का निर्माण करता हूं।


4
यह भी हो सकता है क्योंकि आपको प्रोजेक्ट सेटिंग्स / अन्य लिंकर फ्लैग्स में "-licucore" शब्द जोड़ने की आवश्यकता है। यह मेरे डिबग बिल्ड के लिए स्वचालित रूप से जोड़ा गया था, लेकिन रिलीज नहीं होगा इसलिए संकलन नहीं होगा।
जूलियनबी

4
मेरी भी यही समस्या थी। वास्तव में स्थापित नोट्स को ठीक से नहीं पढ़ा था इसलिए ध्यान नहीं दिया था कि बिल्ड चरणों में बग के नए संस्करण में लिबास बाइनरी की आवश्यकता है।
अधिकतम मैकलेओड

2
क्या आप सुनिश्चित हैं कि आपने अपने हेडर फ़ाइल में घोषित सभी वर्गों के लिए अपने संबंधित .m फ़ाइल में एक @implementation अनुभाग शामिल किया है?
slcott

7
मैं सिर्फ यह जोड़ना चाहता हूं कि मुझे लगता है कि इस सवाल का एक और जवाब देने के लिए यह वास्तव में सम्मानजनक था और हमें मदद करने के लिए वोट देने के लिए कहें।
एंड्रयू

सहायता के लिए धन्यवाद! :) मेरे लिए अन्य लिंकर फ्लैग अनुभाग में स्पष्ट रूप से टाइप करने में मदद की -framework <FrameWorkName>:। मुझे XCTest से समस्या थी, इसलिए मुझे जोड़ना पड़ा -framework XCTest। धन्यवाद! :)
piotr_ch

198

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

इसका निर्माण बिल्ड चरणों टैब और फिर संकलन सूत्रों पर जाएं और सुनिश्चित करें कि आप कक्षा को सूची में खींचें।


6
काश मुझे यह एहसास होता कि यह वह उत्तर था जिसकी मुझे पहले से तलाश थी- वैकल्पिक रूप से आप कक्षाओं को कॉपी करते समय 'लक्ष्यों में जोड़ें' की जाँच करना सुनिश्चित कर सकते हैं।
टी। मार्कले

1
वाह ... इतना तय है कि यह आसान था खुश! स्पष्ट होने के लिए, यदि आप खोजक से अपनी परियोजना में खींचकर एक वर्ग जोड़ते हैं, तो XCode उन्हें हमेशा आपके निर्माण चरणों की सूची में शामिल नहीं करता है। मैं निर्माण चरणों के तहत "संकलित स्रोत" में "+" बटन मारा, सभी अपमानजनक फ़ाइलों को जोड़ा, और यह सीधे संकलित।
एमोस

1
वाह। Apple को वास्तव में अपने त्रुटि संदेशों पर पुनर्विचार करने की आवश्यकता है।
devios1

2
इसे ठीक करने का दूसरा तरीका चुनिंदा फ़ाइल है जिसे गायब कहा जाता है। और "उपयोगिताएँ" स्लाइड बार खोलें। (यह सही दूर है) और "फाइल इंस्पेक्टर" चुनें। फिर सुनिश्चित करें कि "लक्ष्य सदस्यता" के तहत परियोजना में एक चेक है। मैं Xcode 4.6.2 का उपयोग कर रहा हूँ
16

1
मुझे नहीं पता था कि कौन सी फ़ाइल गायब थी, इसलिए मैंने सहायक संपादक (दूसरा संपादन दृश्य) में बिल्ड चरण दिखाए। मैंने बाएं संपादन दृश्य में आपत्तिजनक फ़ाइल खोली और जाँच की कि प्रत्येक आयातित फ़ाइल बिल्ड चरणों में मौजूद है। मैंने वह जोड़ा जो कि नहीं था और इसे हल किया गया था।
डैन सैंडलैंड 13/13

38

मेरे पास एक समान मुद्दा था और मुझे प्रोजेक्ट कॉन्फ़िगरेशन (डिबग, रिलीज़ और तैनाती) और लक्ष्य की बिल्ड सेटिंग्स में से प्रत्येक पर "बिल्ड एक्टिव आर्किटेक्चर ओनली" की जांच करनी थी।


3
मेरे लिए भी चाल चली। हालांकि मुख्य परियोजना में सिर्फ जरूरत थी।
किर्लुक्स

4
मैं उन्हीं मुद्दों का सामना करता हूं। Build Active Architecture Onlyसेटिंग के बीच अलग-अलग हैं Podsऔर अपने प्रोजेक्ट। लिंक स्टेज पर, यह विफल रहा।
अचलोइलू

21

"अपरिभाषित प्रतीक" लिंकर त्रुटियों का एक अन्य संभावित कारण एक .mm फ़ाइल से C फ़ंक्शन को कॉल करने का प्रयास है। जब आप शीर्ष लेख फ़ाइलों को आयात करते हैं तो इस स्थिति में आपको "C" {...} का उपयोग करना होगा।

ऑब्जेक्ट-सी ++ से सी-फंक्शन को जोड़ने वाला लिंकर त्रुटि


14

मेरे साथ भी ऐसा ही मुद्दा था। _OBJC_CLASS _ $ _ के बाद का वर्ग नाम वास्तव में मेरी कक्षा था। जब मैं स्रोत सूची फ़ाइलों को नेविगेशन सूची में खींचता हूं, तो मैं "टारगेट में जोड़ें" पर टिक नहीं करता था।

मेरा समाधान था:

  1. नेविगेशन सूची से कक्षा हटाएं और "केवल संदर्भ हटाएं" चुनें

  2. स्रोत कोड फ़ाइलों को फिर से खींचें और सुनिश्चित करें कि "Add to Target" के लिए टिक बॉक्स टिक किया गया है। टिक बॉक्स "आवश्यक होने पर कॉपी करें" और "समूह बनाएं" के अंतर्गत है।


बस जोड़ने के लिए: हालाँकि यह त्रुटि का सबसे बड़ा कारण नहीं है, मैं अभी आपका जवाब नहीं देता (बॉक्स पर टिक नहीं किया)।
एडम

8

आमतौर पर संस्करण पहचानकर्ता के बिना एक उपनाम है जो वर्तमान संस्करण से जुड़ा हुआ है, इस मामले में libz.dylib libz.1.2.5.dylib से जुड़ा हुआ है। संस्करण एक के बजाय आधार उपनाम का उपयोग करें।


5

लक्ष्य के तहत -> सेटिंग बनाएँ -> Apple LLVM संकलक भाषा: 'C ++ भाषा बोली' और 'C ++ मानक पुस्तकालय' को संकलक डिफ़ॉल्ट पर सेट करने से इसे हल करने में मदद मिली।


5

मैंने केवल libz.1.2.5.dylib को अपनी परियोजना में जोड़ा और यह एक आकर्षण की तरह काम किया।

कदम -

  1. निर्माण चरणों पर जाएं।
  2. लिंक बाइनरी लाइब्रेरी के साथ - फ्रेमवर्क और लाइब्रेरीज़ को जोड़ने के लिए '+' बटन का उपयोग करें।
  3. सूची से libz.1.2.5.dylib चुनें।
  4. बनाएँ और चलाएँ।

5

मेरे पास एक समान मुद्दा था और "std ::" से संबंधित त्रुटियां देखी गईं

मैंने Build Settings -> Apple LVM 5.0 - Language C ++ -> C ++ Standard Library को बदल दिया

libstdc ++ (GNU C ++ मानक पुस्तकालय) से libc ++ (LLVM C ++ 11 के साथ मानक लाइब्रेरी)


5

मुझे वही समस्या थी जब मैं कॉम्बो लाइब्रेरी का उपयोग करता हूं, मैंने इसे 64-बिट को शामिल किए बिना "आर्किटेक्चर" को "स्टैंडर्ड आर्किटेक्चर आर्मव 7, आर्मव 7" में बदलने का फैसला किया। सेटिंग्स बनाएँ


4

मेरे पास .h फ़ाइल में कई @interfaces हैं और अभी तक सभी इसी @implementation निर्देशों को शामिल नहीं किया है। सुनिश्चित करें कि वे सभी संतुलित हैं।


4

यदि आपके पास -ObjCअपने लक्ष्य> बिल्ड सेटिंग> अन्य लिंकर फ्लैग के तहत ध्वज है और आपको यह समस्या मिल रही है, तो इसे हटाने पर विचार करें। यदि आपने जानबूझकर इसे जोड़ा है क्योंकि आपको स्थैतिक पुस्तकालय से कुछ ओबज-सी कोड लोड करने की आवश्यकता है जो सामान्य रूप से अन्यथा लोड नहीं किया जाएगा, IE, एक ओबज-सी श्रेणी, तो आपको -force_load <path>इसके बजाय का उपयोग करना चाहिए -ObjC

<path>आपके Xcode प्रोजेक्ट डायरेक्टरी के सापेक्ष होना चाहिए। IE, यदि आपकी निर्देशिका संरचना इस तरह दिखती है:

iOSProject
  + iOSAPI.framework
      + iOSAPI
  + iOSAPI.xcodeproj

तब आपके पास यह ध्वज सेट होना चाहिए Other Linker Flags:

-force_load iOSAPI.framework/iOSAPI

यदि आप उस तरह कई पुस्तकालय शामिल करना चाहते हैं, तो आपको -force_loadउनमें से प्रत्येक के लिए एक अलग लाइन शामिल करनी चाहिए ।

-force_load iOSAPI.framework/iOSAPI
-force_load another.framework/another

4

यहां बताया गया है कि मुझे यह समस्या कैसे हुई:

मैंने अपने प्रोजेक्ट नेविगेटर पर उन्हें खींचकर एक .h, .m और NIB दूसरे प्रोजेक्ट से जोड़ा। Xcode ने उन्हें ठीक से बिल्ड चरणों में नहीं जोड़ा था।

मेरे उत्तर की जाँच करें क्योंकि मुझे एक समान समस्या थी जिसे मैं कुछ कदम उठाकर हल करने में सक्षम था।


3

अगर आप iOS5 के उन्नयन के साथ काम कर रहे हैं, तो मैंने पाया कि 4.3 के लक्ष्य के लिए लिखी गई एक परियोजना को संकलित करने के लिए, मैं सिर्फ libz.1.2.3.dynlib का नाम बदलकर प्रोजेक्ट नेविगेटर में libz.1.2.5.dynlib पर रख सकता हूँ और इसे संकलित किया।

मेरे iPhoneOS50SDK / usr / lib फ़ोल्डर में कोई libz.1.2.3.dynlib नहीं है - यह नहीं जानते कि यह एक बीटा चीज़ है या सिर्फ प्राकृतिक उन्नयन।


3

अपनी परियोजना पर जाएं, बिल्ड चरणों, संकलन स्रोतों पर क्लिक करें, सूची में GameCenterManager.m जोड़ें।


3

संभवतः आपके लक्ष्य से कुछ कक्षाएं गायब हैं। यह आमतौर पर तब होता है जब आप अपने प्रोजेक्ट में नई कक्षाओं की फ़ाइलों का नाम बदलते / हटाते / जोड़ते हैं। कुछ लक्ष्यों के लिए नए जोड़े गए वर्गों को जोड़ने के लिए।

प्रोजेक्ट नेविगेटर (राइट साइडबार) में क्लास का चयन करें, यूटिलिटीज साइडबार (राइट साइडबार) को खोलें, यूटिलिटीज से फाइल इंस्पेक्टर (आइकन जैसी फाइल) का चयन करें, लक्ष्य सदस्यता टैब के तहत अपने लक्ष्यों को टिक करें। यह "संदर्भ हटाएं" से बचने और "टार्गेट में जोड़ें" ट्रिक के साथ फिर से जोड़ने के लिए है।

इसलिए: क्लास -> यूटिलिटीज (फाइल इंस्पेक्टर) का चयन करें -> टार्गेट मेंबरशिप -> अपने इच्छित टार्गेट पर टिक करें।


2

मुझे यह सुझाव यहां नहीं मिला, इसलिए यह यहां जाता है: यदि आपकी परियोजना में एक से अधिक लक्ष्य हैं (यानी ओएसएक्स के लिए एक और आईओएस के लिए) तो आपको प्रत्येक लक्ष्य के लिए प्रासंगिक पुस्तकालयों को लिंक करना होगा .. इसलिए उदाहरण के लिए मेरे मामले में जरूरत ऑडियोटबॉक्स .. मुझे इसे एक बार OSX के लिए और एक बार iOS के लिए जोड़ना था ( फ्रेमवर्क फ़ोल्डर के तहत , आपके पास प्रत्येक लक्ष्य के लिए प्रत्येक लाइब्रेरी का डुप्लिकेट होना चाहिए .. यदि आप केवल एक ही देखते हैं .. तो वह एक लाल झंडा है)


इस जवाब से मुझे मदद मिली। हालांकि, मेरी स्थिति और भी अधिक सीधे थी ... मैं बस एक रूपरेखा जोड़ना भूल गया था जिसे मेरे कोडबेस ने संदर्भित किया था। मेरे मामले में मैं AVFoundation.framework लोड करने में विफल रहा।
जॉन एर्क

हां, मैं बस "लिंक बाइनरी विद लाइब्रेरीज़" चरण के तहत एक रूपरेखा जोड़ना भूल गया।
मैक्स

2

मैं PJSIP पुस्तकालयों के साथ एक समस्या का सामना कर रहा था,

परियोजना के अन्य लिंकर झंडों में निम्नलिखित की कोशिश की और त्रुटि को हल करने में सक्षम: -फ्रेमवर्क फाउंडेशन -फ्रैमवर्क यूआईआईटी

ऊपर लिंकर झंडे का उपयोग सिथोन प्रोजेक्ट में जीथब पर किया गया है । ये सेटिंग आपको C ++ पुस्तकालयों को जोड़ने से संबंधित समस्याओं को हल करने में मदद करेगी।


मुझे PJSIP लिब्राब्रिज के साथ भी यही समस्या है, क्या आप इसके बारे में विस्तार से बता सकते हैं
रजत जैन

प्रोजेक्ट बिल्ड सेटिंग के अन्य लिंकर झंडों में निम्नलिखित मान सेट करें: -फ्रेमवर्क फाउंडेशन -फ्रैमवर्क यूकीट
आदेश जैन

त्रुटि संदेश: फ़ाइल /User/user/Downloads/pjproject-2.7.2/pjsip-apps/src/pjsua/ios/libyuv.a को अनदेखा करते हुए, फ़ाइल को संग्रह के लिए बनाया गया था जो आर्किटेक्चर लिंक नहीं हो रहा है (i386): / उपयोगकर्ता /user/Downloads/pjproject-2.7.2/pjsip-apps/src/pjsua/ios/libyuv.a वास्तुकला के लिए अनिर्धारित प्रतीकों i386: "_pjsip -register_method", से संदर्भित:
रजत जैन

ऐसा लगता है कि आप सिम्युलेटर पर एप्लिकेशन चलाने की कोशिश कर रहे हैं और libyuv.a सिम्युलेटर आर्किटेक्चर i386 के लिए नहीं बनाया गया है। सीधे डिवाइस पर ऐप चलाने की कोशिश करें
Adeesh Jain

मैं स्विफ्ट में Pjsip को एकीकृत करना चाहता हूं। मैंने ब्रिजिंग हेडर बनाने की कोशिश की लेकिन यह काम नहीं किया। क्या आप मुझे कुछ विचार दे सकते हैं?
रजत जैन

1

अंत में मुझे यह समझ में आया, मैंने इस मुद्दे को लक्ष्य में अनुपस्थित ढांचे को जोड़कर हल किया-> चरण बनाएँ-> लाइब्रेरी के साथ लिंक बाइनरी


1

मुझे एक बार यह समस्या हुई थी। मुझे महसूस हुआ कि कक्षा में जाने के दौरान, मैंने गंतव्य फ़ोल्डर पर .mmफ़ाइल के साथ .hफ़ाइल को ओवरराइट कर दिया था ।

उस समस्या को ठीक करने से त्रुटि ठीक हो गई।


1

मुझे 'आर्किटेक्चर आर्मव 7 के लिए अपरिभाषित प्रतीक': एक प्रॉजेक्ट को संकलित करने का प्रयास करते समय मिला, जिसमें 'सी ++ मानक लाइब्रेरी' के लिए 'लिबास ++' के लिए निर्धारित टारगेट सेट करने की कोशिश थी (आवश्यक रूप से प्रोजेक्ट सी ++ 11 से कुछ विशेषताओं का उपयोग कर रहा था), और परियोजना में एक उप-परियोजना शामिल थी जिसमें 'libstdc ++' के समान सेटिंग थी (या वर्तमान में जैसा कि डिफ़ॉल्ट है)।

उप-परियोजना की 'C ++ Standard Library' सेटिंग को libc ++ में बदलना इसे तय करता है, लेकिन उप-परियोजना के लिए तैनाती लक्ष्य को 5.0 या इसके बाद के संस्करण को निर्धारित करने के बाद ही (5.0 libc ++ के लिए आवश्यक है)।


1

मैं आपको और सुझाव देता हूं जो आप जांच सकते हैं कि अन्य सामान्य सुझाव मदद नहीं कर रहे हैं।

यदि आप अन्य प्रोजेक्ट (libxxx.a) के साथ लिंक करते हैं, तो आप कभी-कभी अजीब समस्या से मिल सकते हैं, जिसे आप एनएम जैसे उपकरणों के साथ प्रतीक पा सकते हैं, लेकिन वे केवल प्रतीकों को ld में नहीं पा सकते हैं। फिर आपको जांचना चाहिए कि क्या दोनों प्रोजेक्ट एक ही झंडे में बने हैं, उनमें से कुछ बाइनरी प्रारूप को प्रभावित कर सकते हैं।

  1. जाँच सी + + संकलक।
  2. जाँच सी ++ बोली सेटिंग।
  3. c ++ रनटाइम प्रकार समर्थन की जाँच करें। (-Frtti / -fnortti)
  4. जाँच करें कि क्या .A एक ही नाम के साथ कहीं और दिखाई देता है, लिंक पथ सूची में वांछित फ़ाइल से परे हो सकता है। उन्हें हटा दो।

1

मैं जब मैं पर अनुप्रयोग चलाने इस समस्या को मिला iphone5s , यह ऐड द्वारा हल किया गया था arm64 को आर्किटेक्चर


1

मुझे भी यही समस्या थी। मैंने उत्तर की विशाल सूची से हर चीज की कोशिश की, लेकिन अंत में मेरी समस्या थी: मैं ओपन सीवी के साथ काम कर रहा हूं, इसलिए मुझे अपने कोड में C ++ कोड को संयोजित करने की आवश्यकता है। ऐसा करने के लिए आपको उन फ़ाइलों को बदलना चाहिए जो उद्देश्य-सी और सी ++ का उपयोग करती हैं। मुझे एक फ़ाइल नहीं बदली और इस फ़ाइल का सी ++ कोड से कोई संबंध नहीं है, लेकिन मुझे इसे बदलना पड़ा।


1

ShareKit स्थापित करते समय मेरे पास यह समस्या थी। यह सिम्युलेटर में काम करता था, लेकिन डिवाइस पर नहीं। मैंने अन्य Linker फ्लैग से -all_load को हटा दिया और सिम्युलेटर और iPhone डिवाइस दोनों में सब कुछ ठीक काम करता है।


1

मेरे मामले में, मैंने एक फ्रेमवर्क जोड़ा होगा जो ऑब्जेक्टिव C ++ का उपयोग कर रहा होगा। मुझे यह पोस्ट मिली:

XCode .m बनाम .mm

यह बताया कि कैसे main.m को main.mm में नाम बदलने की आवश्यकता है ताकि ऑब्जेक्टिव-सी ++ कक्षाएं संकलित की जा सकें, भी।

उसने मेरे लिए इसे हल कर दिया।


1

मैं उस मुद्दे का सामना करने के लिए उपयोग करता हूं जब मॉड्यूल (फ़ाइल .m) उस लक्ष्य में नहीं होता है जिसके साथ मैं काम कर रहा हूं।


1

मेरे लिए समस्या यह थी कि मैं .m (कार्यान्वयन) में अपने स्थिरांक के लिए मान सेट करना भूल गया

file const kFooKey = @"Foo";

1

मैंने ड्रैगिंग और ड्रोपिंग के माध्यम से फाइलें भी जोड़ीं। मैंने जो भी किया, मैंने सभी फाइलों के संदर्भों को हटा दिया ( frameworksउन्हें छोड़कर ) उन्हें फिर से ठीक से Add Files To Project विकल्प के माध्यम से जोड़ा , समस्या चली गई।


1

यदि आप Unity3D 5 से निर्माण कर रहे हैं और एक Prime31 प्लगइन का उपयोग भी कर रहे हैं और आपको यह त्रुटि मिल रही है तो शायद यह एक डुप्लिकेट के कारण है। यदि आप यूनिटी के संपादक में अपनी चेतावनियों के माध्यम से देखते हैं, तो उनमें से एक आपको यह बताएगा और चेतावनी देगा कि यह त्रुटियों का कारण बन सकता है। यह देखने के लिए कि क्या यह मामला है, अपने प्रोजेक्ट खोज फ़ील्ड में P31 टाइप करें और इसे सही पॉप अप करना चाहिए, शायद एक से अधिक भी। डुप्लिकेट की फ़ाइल नाम के अंत में एक '1' होगा। यह संभवतः स्टोर या प्राइम 31 मेनू टैब के माध्यम से संपादक में प्लगइन को अपडेट करने से होता है।

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