से कॉलिंग सी ++ विधि में मेरे पास निम्न फ़ाइलें हैं।उद्देश्य सी
foo.h (सी ++ हेडर फाइल)
foo.mm (सी ++ फाइल)
test_viewcontroller.h (उद्देश्य सी हेडर फाइल)
test_viewcontroller.m (वस्तुनिष्ठ सी फाइल)
मैं घोषणा की है एक विधि donothing() foo.h में और foo.mm.Lets में यह परिभाषित कहते हैं कि यह
डबल donothing (डबल क) {एक वापसी है, }
अब, मैं
डबल var = donothing (somevar) test_viewcontroller.m में इस कार्य को करने के लिए प्रयास करें;
मैं लिंकर त्रुटि जो "प्रतीकों नहीं मिल सकता है" _donothing() test_viewcontroller.o
collect2 में कहते हैं मिलती है: ld 1 से बाहर निकलें स्थिति
किसी को भी कृपया मुझे क्या गलत है के रूप में इंगित कर सकते लौटे?
मुझे सटीक होना करते हैं:
#ifdef __cplusplus
extern "C"
{
char UTMLetterDesignator(double Lat);
NSString * LLtoUTM(double Lat,double Long,double UTMNorthing, double UTMEasting);
double test(double a);
}
#endif
@Carl
मैं अपने कोड sample.Are कह रही है कि मैं ifdef.I में केवल परीक्षण() विधि रैप करने के लिए की जरूरत को शामिल किया है यह समझ में नहीं आता कि यह क्या अंतर कर सकता है। क्या आप कृपया समझा सकते हैं?
मैं
आप इसे इस तरह लग रहे करना चाहते हैं बाहरी "सी" जोड़ने की कोशिश की। लेकिन मुझे एक नई त्रुटि मिलती है - "अपेक्षित आईडीन टिफायर या '(' स्ट्रिंग निरंतर से पहले ' – Janani
@ वाहर्स, आपको केवल' सी ++ के लिए 'बाहरी' सी '' जोड़ने की आवश्यकता है - इसका मतलब है कि इसे '#ifdef __cplusplus' ब्लॉक में लपेटना है। –
@ करल - प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! लिंकर त्रुटि अब चली गई है !! लेकिन मुझे "test_viewcontroller.m" में एक नई चेतावनी मिली - फ़ंक्शन "डोनिंग()" की निहित घोषणा। मुझे विश्वास है कि यह तब होता है जब मैंने हेडर फ़ाइल को शामिल नहीं किया है जिसमें फ़ंक्शन घोषणा है। लेकिन मेरे पास एक आयातित foo.h है "test_viewcontroller.m" में। क्या आप कृपया मुझे बताएं कि क्या गलत है? – Janani