2013-04-09 6 views
11

.so NDK निर्मित मैं दो सरल कार्यों बनाया (सेट और एक पूर्णांक लौट) ग्रहण (एंड्रॉयड परियोजना) पर सी में मैं ndk-build इस्तेमाल किया एक .so निर्माण करने के लिए। मैं इसका उपयोग कैसे कर सकता हूं। Xamarin पर और मेरे Xamarin.Android प्रोजेक्ट पर उन दो कार्यों का उपभोग करें?Xamarin: का उपयोग

धन्यवाद!

उत्तर

13

के हम MyTest.so नामक एक साझा लाइब्रेरी है और हम Xamarin.Android परियोजना में उपयोग करना चाहते हैं मान लेते हैं। MyTest.so)

पूर्णांक MyTest_GetValue एक समारोह के होते हैं (;

अब, हम Xamarin.Android परियोजना पर इस सुविधा का उपयोग करने की आवश्यकता है। ये कदम उठाएँ इतनी के रूप में सफल होने के लिए कर रहे हैं:

चरण 1: Xamarin.Android परियोजना lib और उप-फ़ोल्डर armeabi कहा जाता है के अंदर एक नया फ़ोल्डर बनाएँ। here

चरण 2: लाइब्रेरी के गुणों को सेट करें। (आयातित लाइब्रेरी) "एंड्रॉइडनेटिव लाइब्रेरी" पर कार्रवाई करें और "हमेशा कॉपी करें" पर आउटपुट में कॉपी करें, के रूप में armeabi फ़ोल्डर के अंदर इस्तेमाल किया जाना चाहिए।

चरण 3: (Xamarin.Android क्लास जैसे में कार्य करना: MainActivity.cs)

  • द्वारा नाम स्थान InteropServices शामिल करें "System.Runtime.InteropServices का उपयोग कर,"

  • उपयोग मानक DllImport प्रोजेक्ट में मूल पुस्तकालय को नीचे आयात करने के लिए: [DllImport ("MyTest.so")] सार्वजनिक बाहरी स्टैटिक int MyTest_GetValue(); // सटीक फ़ंक्शनक्शन नाम के साथ, टाइप करें & .so Lib में पैरा।

चरण 4: उपरोक्त फ़ंक्शन का उपयोग करें (MyTest_GetValue())।

उदाहरण के लिए

:

पूर्णांक मान = MyTest_GetValue();

कंसोल। राइटलाइन (value.ToString());

मिशन पूरा!: डी

+0

क्या आप एक [आउट] तर्क के साथ एक उदाहरण समारोह दिखा सकते हैं? बूल MyTest_GetValue (स्ट्रिंग * retVal) की तरह; धन्यवाद – hrz

+0

जहां तक ​​मैं सोच सकता हूं, यह [आउट] तर्कों का उपयोग करके कोई अलग नहीं होना चाहिए। चरण 1 और 2 निष्पादित करना, फिर चरण 3 जिसमें [आउट] तर्कों के साथ फ़ंक्शन शामिल है और अंततः उस कार्य को लेने के लिए चरण 4 को ठीक काम करना चाहिए। नोट: 2013 से Xamarin बहुत बदल गया है (यह सवाल)। –