2011-09-20 7 views
10

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

उत्तर

8

मिला जवाब! ऐसा लगता है कि यह एक गड़बड़ है, लेकिन यह एक काम के आसपास है की तरह: मूल रूप से http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/1900bd21-8693-4127-800a-f35cfd5daac2

, पहले आप,, WinRT घटक परियोजना को साफ तो आप संदर्भ जोड़ने तो एक संदर्भ मैन्युअल में \ कुलपति \ स्थित platform.winmd में जोड़ें बिन तो आपको जाने के लिए अच्छा होना चाहिए।

2

सी ++ WinRT विधानसभा आप शायद संदर्भित कर रहे हैं वस्तुओं है कि IDisposable इंटरफ़ेस कार्यान्वित कर रहे हैं ताकि आप भी संदर्भ के लिए सी ++ एसेम्बली इंटरफ़ेस युक्त है उपयोग करता है।

+0

क्या सी ++ विधानसभा? माना जाता है कि, WinRT के लिए सभी मूल असेंबली पहले से ही संदर्भित हैं। चयन संवाद में चयन करने के लिए कोई अतिरिक्त मानक असेंबली नहीं है। –

+3

@Jeremy ऐसा लगता है कि यह 'Platform.IDisposable' को हल करने के लिए नेट अनुप्रयोग के लिए' Microsoft.VCLibs' के लिए एक संदर्भ जोड़ने की जरूरत है (एक तरफ ध्यान दें पर, मैं यह अपेक्षा की होगी 'System.IDisposable के रूप में पेश किए जाने की ', लेकिन ऐसा नहीं होता ...)। हालांकि, इसे संदर्भ के रूप में जोड़ना तैनाती के दौरान समस्याएं पैदा करता है। शायद एक देव पूर्वावलोकन quirk। –

+0

हाँ, मैंने माइक्रोसॉफ्ट.वीसीलिब्स को देखा और इसे आजमाया, और ऐसा लगता है कि यह कहां परिभाषित किया गया है, लेकिन मुझे तैनाती के दौरान भी त्रुटियां मिल रही हैं। पैकेजिंग सामानों का शोध करना होगा - शायद काम करने के लिए पैकेज में वीसीएलआईबी को शामिल करना होगा? कोई भी काम करने में सक्षम है? –

2

तो मैं इसी तरह के मुद्दों में चलाने, Microsoft.VCLibs के लिए एक संदर्भ जोड़ने के बाद, मैं तैनात करने के लिए सक्षम नहीं था। हालांकि मैंने देखा कि डिफ़ॉल्ट रूप से WinRT घटक x86 कोड में संकलित किया गया है जबकि सी # मेट्रो स्टाइल ऐप किसी भी cpu को लक्षित करता है, और यह मेरे मामले में एक मूल कारण था। सी # एप को x86 पर स्विच करने से समस्या हल हो गई।

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