2010-04-08 17 views
8

में मुझे उम्मीद है कि मुझे शायद एक साधारण समस्या है, लेकिन मुझे गलत होने के बारे में चेतावनी देने के लिए संकलन के दौरान कोई जानकारीपूर्ण त्रुटियां या चेतावनियां नहीं हैं।प्रतीक नहीं मिला, फ्लैट नामस्थान ओब्जेसी ++

मुझे एक उद्देश्य-सी ++ ऐप मिला है जिसमें सी ++ मुख्य और ओबीजेसी हेडर फाइलें शामिल हैं।

यह ठीक बनाता है, लेकिन जब चलाने के लिए, यह इस त्रुटि संदेश देता है:

Dyld Error Message: 
    Symbol not found: _OBJC_CLASS_$_AppController 
    Referenced from: /Users/slate/Documents/osirixplugins/eqOsirix/build/Development/rcOsirix.app/Contents/MacOS/rcOsirix 
    Expected in: flat namespace 
in /Users/slate/Documents/osirixplugins/eqOsirix/build/Development/rcOsirix.app/Contents/MacOS/rcOsirix 

Googling की कोई मात्रा एक समाधान में बदल गया है, और मुझे यकीन है कि मैं सिर्फ एक संकलन चूक या विकल्प का निर्माण किया है हूँ कहीं।

"AppController.h" लक्ष्य (जाँच) में शामिल है, और #import 'ObjC कक्षा फ़ाइल में d।

किसी भी मदद की बहुत सराहना की जाती है।

ओबीजेसी ++ लगातार मुझे सिरदर्द देता है।

धन्यवाद,

एस!

उत्तर

5

स्पष्ट रूप से AppController क्लास गुम है। क्या AppController क्लास गतिशील पुस्तकालय के ढांचे में परिभाषित किया गया है? यदि ऐसा है, तो जब आप ऐप चलाते हैं, तो क्या यह पता चलता है कि पुस्तकालयों/ढांचे को कहां ढूंढना है?

यह एक लिंकर मुद्दा है, वैसे भी। हेडर फाइलें अप्रासंगिक हैं। यह एमएम या। एमएम फाइलों को देखने की जरूरत है।

+1

हां, असल में, यह .m फ़ाइल में नामस्थान समस्या थी जिसमें AppController.h शामिल था, जिससे यह बाइनरी में नहीं था। जीसीसी ने हालांकि कोई गलती नहीं की, इसलिए मुझे नहीं पता था कि क्या गलत था। धन्यवाद। –

1

यह सुनिश्चित नहीं है कि यह आपका मुद्दा है, लेकिन मुझे सी ++ डीएल के साथ एक ही समस्या हो रही थी, जिसने मुझे पूरे दिन डीबग करने के लिए लिया। मैंने लगभग 15 वर्षों तक सी ++ में प्रोग्राम नहीं किया है, और शुद्ध वर्चुअल फ़ंक्शन लिखने का प्रयास करते समय, मैंने परिचित वाक्यविन्यास "वर्चुअल शून्य एफ();" ओह। सी ++ में यह "वर्चुअल शून्य एफ() == 0 होना चाहिए;" मैक ओएसएक्स 10.9.2 पर जीसीसी का नवीनतम संस्करण खुशी से कोड संकलित करता है।

मुझे लगता है कि यह एक पूरी तरह से कानूनी आगे घोषणा यकीन है ... फिर भी, नहीं सी ++ कक्षाएं एक से अधिक फ़ाइलों को पार करने वाली अनुमति देता है, तो ऐसा लगता है जैसे यह चिह्नित किये जाना चाहिए (के रूप में कोई कार्यान्वयन कभी CXX फ़ाइल में आपूर्ति की है।) में कोई भी घटना, प्रतीक इसे ऑब्जेक्ट कोड में बनाता है, और लिंकर कभी शिकायत नहीं करता है, इसलिए आप लापता संदर्भ के साथ समाप्त होते हैं। उम्मीद है कि यह किसी की मदद करता है।

+0

इसने निश्चित रूप से मेरी मदद की है। संकेत के लिए धन्यवाद। मैं अपने सार वर्ग के तरीकों में से एक को '= 0' जोड़ना भूल गया। –

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