2009-06-29 12 views
6

मैं एक्सकोड 3.1.3 का उपयोग कर अपने कोको टच आईफोन एप्लिकेशन से सी ++ लाइब्रेरी (क्लासिन) का उपयोग करने की कोशिश कर रहा हूं। जब मैं आईफोन सिम्युलेटर में चलता हूं तो सबकुछ ठीक काम करता है, लेकिन जब मैं डिवाइस पर चलता हूं तो चीजें अजीब होती हैं। ऐसा लगता है जैसे पॉइंटर्स को उद्देश्य-सी ++ कोड (मेरा ऐप) से C++ लाइब्रेरी (CLucene) में सही ढंग से पारित नहीं किया जा रहा है।आईफोन ऐप में सी ++ कोड

डिवाइस पर ऐप डीबग करते समय, मैं सी ++ में 0x12546c0 से सी ++ में 0x4e से 0x4e में C++ फ़ंक्शन परिवर्तन के पैरामीटर के रूप में पारित एक कॉन्स्ट char * चर देख सकता हूं। चूंकि 0x4e मान्य कॉन्स्ट char * पर इंगित नहीं करता है, इसलिए C++ कोड विफल रहता है। सिम्युलेटर में डीबगिंग करते समय ऐसा नहीं होता है।

मैं सी ++ लाइब्रेरी को सीधे ऐप में संकलित कर रहा हूं, स्थिर या गतिशील lib से लिंक नहीं कर रहा हूं।

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

उत्तर

4

प्रोजेक्ट की बिल्ड सेटिंग्स में "थंब के लिए संकलन" को अक्षम करना समस्या को हल करता है।

+0

वास्तव में? मैंने सुना है कि बहुत सारे फ्लोट्स का उपयोग करने वाले प्रोग्रामों को तेज़ कर सकते हैं। लेकिन मुझे आपके प्रश्न के उत्तर की उम्मीद नहीं होती। – Nosredna

+0

मैंने कोड को तेज़ करने के बारे में एक ही बात सुनी है, लेकिन इस मामले में मैं "थंब के लिए संकलन" सक्षम करके समस्या को पुन: उत्पन्न कर सकता हूं। मुझे यकीन नहीं है कि ऐसा क्यों है, या यह क्यों होता है जब यह इस सी ++ कोड से जुड़ता है, लेकिन इसका स्पष्ट रूप से कुछ प्रभाव पड़ता है। –

0

आईफोन ऐप में सी ++ कोड का उपयोग करने में कोई समस्या नहीं होनी चाहिए (मैं इसे हर समय करता हूं)।

पॉइंटर्स को बिना किसी व्याख्या के पॉइंटर्स के रूप में पास किया जाना चाहिए।
क्या आप सुनिश्चित हैं कि उद्देश्य-सी ++ ऑब्जेक्ट एक 'कॉन्स्ट चार *' है और कुछ अन्य प्रकार नहीं है जो रन-टाइम पर फ्लाई पर 'कॉन्स्ट चार *' में परिवर्तित हो जाते हैं?

+0

हां, मैं चार सरणी बना देता हूं। मान वास्तव में एक कॉन्स char * है और रन टाइम पर परिवर्तित नहीं किया जा रहा है। –

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