2013-08-14 7 views
5

में आईसीयू शामिल करें मैंने सी ++ में एक लाइब्रेरी बनाई है जिसे मैं एनडीके का उपयोग करके अपने एंड्रॉइड एप्लिकेशन में शामिल करना चाहता हूं। हालांकि, मेरी पुस्तकालय को आईसीयू 4 सी का उपयोग करने की आवश्यकता है। मैं एंड्रॉइड के लिए आईसीयू संकलित करने की कोशिश कर रहा हूं, और मैंने एसओ पर बहुत सारे प्रश्न देखे हैं, लेकिन मैं अभी भी आईसीयू को एंड्रॉइड के लिए .a फाइलों में संकलित करने में असमर्थ हूं। मुझे यकीन नहीं है कि ऐसा करने का सबसे अच्छा तरीका है। क्या किसी ने आईसीयू के साथ एनडीके के साथ सफलता प्राप्त की है?एंड्रॉइड एनडीके प्रोजेक्ट

वैसे, मैं आईसीयू 51.2 का उपयोग करने की उम्मीद कर रहा था, जब तक कि पुराने संस्करण का उपयोग करने का कोई अच्छा कारण न हो।

उत्तर

2

आप में अपने Android.mk

LOCAL_CFLAGS := -DANDROID -fdata-sections -ffunction-sections 
LOCAL_CPPFLAGS := -DANDROID -frtti -fno-exceptions -fdata-sections -ffunction-sections 

आप अपवाद के बिना एंड्रॉयड NDK का उपयोग करते हैं तुम्हारी याद आ रही cxa_bad_typeid()

extern "C" std::type_info const& __cxa_bad_typeid() 
{ 
    // just return something 
    return typeid(void*); 
} 
+0

हैक करने की आवश्यकता होगी है इन चिह्नों को निर्दिष्ट करके एंड्रॉयड स्थिर पुस्तकालय के रूप में आईसीयू निर्माण कर सकते हैं ' '__cxa_bad_typeid' नाम के नाम से बचने के लिए बाहरी" सी "'? यदि ऐसा है, तो क्या आप लिंकर चेतावनी को हल करने के तरीके के बारे में जानते हैं: "__cxa_bad_typeid में सी-लिंकेज निर्दिष्ट है, लेकिन उपयोगकर्ता द्वारा परिभाषित प्रकार 'const std :: type_info &' देता है जो सी के साथ असंगत है"। मैं चेतावनी को अक्षम कर सकता हूं, लेकिन मैं जानना चाहता हूं कि इसे ठीक करने का कोई उचित तरीका है या नहीं। – meowsqueak

+0

@meowsqueak आप 'शून्य * __cxa_bad_typeid()' का उपयोग कर सकते हैं लेकिन यह हैक और भी बदतर और टाइप-असुरक्षित होगा। –

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