2012-12-25 29 views
6

SCENARIO:WinRT सेल्सियस तक ++ DLL परियोजना संदर्भ नहीं जोड़ा जा सका

मैं बनाने रहा एक [संपादित करें: देशी WinRT] "Direct3D एप्लिकेशन" दृश्य स्टूडियो कोड के आधार पर विंडोज स्टोर ऐप्लिकेशन के लिए सी ++ डायरेक्ट एक्स DLL परियोजना नमूना।

यह मेरे विंडोज स्टोर ऐप प्रोजेक्ट से एक अलग डीएलएल प्रोजेक्ट होना चाहिए क्योंकि मैं विंडोज 8 मेट्रो ऐप और ऐप के विंडोज फोन संस्करण दोनों में डायरेक्ट एक्स रेंडरर के साथ अपने एक्सएएमएल उपयोगकर्ता नियंत्रण का उपयोग करूँगा।

समस्या:

मैं संदर्भ नहीं दे सकता सी # Windows Store एप्लिकेशन परियोजना में सी ++ परियोजना। दृश्य स्टूडियो इन शब्दों के साथ मना कर दिया:

A reference to <project-name> could not be added. 

मैं सी ++/CLR ध्वज का उपयोग कर परियोजना को संकलित करने के सुझाव देखा है, लेकिन इस के साथ संगत नहीं है:

  • /ZW ध्वज के लिए आवश्यक परियोजना
  • "wrl.h" शीर्षक
  • परियोजना सेटिंग्स में अन्य कमांड लाइन झंडे की एक भीड़ के भीतर कुछ एपीआई

तो/clr ध्वज इस स्थिति में एक विकल्प नहीं प्रतीत होता है।

प्रश्न:

मैं कैसे संदर्भित कर सकते हैं सी ++ परियोजना ताकि मैं सी # विंडोज स्टोर ऐप्स परियोजना के भीतर मेरी XAML डायरेक्ट एक्स रेंडरर का उपयोग कर सकते हैं? या क्या कोई बेहतर विकल्प है?

अग्रिम धन्यवाद।

उत्तर

6

मैंने सी ++ प्रोजेक्ट को Windows Runtime Component प्रोजेक्ट के रूप में फिर से बनाकर समस्या हल की। मैंने मूल रूप से Class Library (Windows Store apps) टेम्पलेट से परियोजना बनाई थी। यह होना चाहिए कि विन आरटी टेम्पलेट में कुछ विन्यास सेटिंग्स हैं जो इसे काम करने में सक्षम बनाती हैं।

इस परिवर्तन के बाद, परियोजना को सी # प्रोजेक्ट में संदर्भ के रूप में जोड़ा जा सकता है।

यह @ user1610015 के जवाब यह है कि मुझे एहसास हुआ कि मैं वास्तव में देशी जीत आर टी कोड विकसित कर रहा था की वजह से है, कामयाब नहीं कोड है, जो मुझे इस समाधान की कोशिश करने के लिए नेतृत्व - धन्यवाद!

4

/ZW ध्वज सी ++/सीएक्स परियोजनाओं के लिए है। सी ++/सीएक्स प्रबंधित सी ++ (सी ++/सीएलआई) के सिंटैक्स में लगभग समान है, सिवाय इसके कि सी ++/सीएक्स पूरी तरह से अप्रबंधित है। ऐसा हो सकता है कि आपको लगता है कि आप प्रबंधित सी ++ विकसित कर रहे थे, वास्तव में जब आप नहीं थे।

मैंने सी ++/सीएक्स का उपयोग नहीं किया है, लेकिन जो मैंने सुना है, विंडोज रनटाइम कक्षाएं COM कक्षाएं हैं। तो मुझे लगता है कि आप अपने अप्रबंधित DLL से एक प्रबंधित DLL बनाने के लिए Windows SDK से TlbImp.exe टूल का उपयोग कर सकते हैं, जिसे आप अपने सी # प्रोजेक्ट से संदर्भित कर सकते हैं। इसे आज़माएं और अगर यह काम करता है तो मुझे बताएं।

एक और विकल्प विंडोज रनटाइम से सी ++/सीएक्स के बिना बात करना है। जबकि सी ++/सीएक्स विंडोज रनटाइम प्रोग्रामिंग को बहुत आसान बनाता है, यह कड़ाई से जरूरी नहीं है। आप WRL लाइब्रेरी का भी उपयोग कर सकते हैं। चूंकि डब्लूआरएल लाइब्रेरी शुद्ध सी ++ है, इसलिए इसे सी ++/सीएलआई से भी प्रयोग योग्य होना चाहिए।

+0

इस जानकारी के लिए धन्यवाद - मुझे नहीं पता कि मैं अप्रबंधित कोड के विकास नहीं किया गया था। मैं Tlbimp.exe कोशिश करने की जरूरत खत्म नहीं हुई - ऊपर मेरा उत्तर देखें। – Brett

+0

@Brett कुछ नहीं कहता धन्यवाद आप एक वोट दें की तुलना में बेहतर ... – thumbmunkeys

+0

@pivotnig ठीक है, किया :) – Brett