2012-03-21 19 views
7

मुझे कुछ स्पष्ट याद आना चाहिए लेकिन मुझे यकीन नहीं है कि क्या।सी ++ संकलक त्रुटियों xamltypeinfo.g.cpp

मैंने एक खाली सी ++ मेट्रो ऐप बनाया है और मैंने अभी एक मॉडल जोड़ा है जिसे मैं अपने यूआई में जोड़ दूंगा हालांकि मुझे xamltypeinfo.g.cpp से संबंधित कंपाइलर त्रुटियों की एक श्रृंखला मिल रही है और मुझे यकीन नहीं है कि मैं क्या कर रहा हूं याद किया है

मेरे हेडर फाइल इस तरह दिखता है:

#pragma once 
#include "pch.h" 
#include "MyColor.h" 

using namespace Platform; 

namespace CppDataBinding 
{ 
    [Windows::UI::Xaml::Data::Bindable] 
    public ref class MyColor sealed : Windows::UI::Xaml::Data::INotifyPropertyChanged 
    { 
    public: 
     MyColor(); 
     ~MyColor(); 

     virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler^ PropertyChanged; 
     property Platform::String^ RedValue 
     { 
      Platform::String^ get() 
      { 
       return _redValue; 
      } 
      void set(Platform::String^ value) 
      { 
       _redValue = value; 
       RaisePropertyChanged("RedValue"); 
      } 
     } 

    protected: 
     void RaisePropertyChanged(Platform::String^ name); 

    private: 
     Platform::String^ _redValue; 
    }; 
} 

और मेरे cpp फ़ाइल इस तरह दिखता है:

#include "pch.h" 
#include "MyColor.h" 

using namespace CppDataBinding; 

MyColor::MyColor() 
{ 
} 

MyColor::~MyColor() 
{ 
} 

void MyColor::RaisePropertyChanged(Platform::String^ name) 
{ 
    if (PropertyChanged != nullptr) 
    { 
     PropertyChanged(this, ref new Windows::UI::Xaml::Data::PropertyChangedEventArgs(name)); 
    } 
} 

कुछ नहीं भी मुश्किल, लेकिन जब मैं मैं का संकेत MyColor है कि xamltypeinfo.g.cpp में त्रुटियों मिल संकलन CppDataBinding में परिभाषित नहीं किया गया है।

प्रासंगिक बनाया गया कोड इस तरह दिखता है:

if (typeName == "CppDataBinding.MyColor") 
{ 
    userType = ref new XamlUserType(this, typeName, GetXamlTypeByName("Object")); 
    userType->Activator = ref new XamlTypeInfo::InfoProvider::Activator(
          []() -> Platform::Object^ 
          { 
           return ref new CppDataBinding::MyColor(); 
          }); 
    userType->AddMemberName("RedValue", "CppDataBinding.MyColor.RedValue"); 
    userType->SetIsBindable(); 
    xamlType = userType; 
} 

अगर मैं MyColor कोड संकलित से Bindable विशेषता को हटा दें।

क्या कोई मुझे बता सकता है कि मुझे किस अंधेरे से स्पष्ट चीज याद आई है, इसलिए मैं खुद को एक चेहरे का सामना कर सकता हूं और समस्या को ठीक कर सकता हूं?

+0

एक स्पष्ट रूप से स्पष्ट चीज जिसे आपने स्पष्ट रूप से याद किया है वह यह है कि जो कुछ भी आप यहां उपयोग कर रहे हैं, वह सी ++ नहीं है। –

+0

संकलक उत्सर्जक त्रुटि संदेश क्या करता है? –

+0

यह xor "^" क्या करता है "प्लेटफ़ॉर्म :: स्ट्रिंग ^" "यहां? –

उत्तर

14

मैंने एक छोटा बदलाव किया और अब यह काम करता है।

मैं BlankPage.xaml.h फाइल करने के लिए

#include "MyColor.h" 

जोड़ा है, भले ही मैं अभी तक नहीं MyColor के लिए किसी भी अन्य संदर्भ जोड़ लिया है और अब यह संकलित करता है।

मुझे लगता है कि अगर आप कुछ [Bindable] बनाते हैं तो हेडर को काम करने के लिए कम से कम एक xaml पेज में शामिल किया जाना चाहिए। एक बाध्यकारी प्रकार जिसे कहीं भी संदर्भित नहीं किया गया है संकलक त्रुटियों का कारण बनता है।

+0

आह, हाँ। आपका विश्लेषण सही है। यह एक्सएएमएल कंपाइलर की एक सीमा है। –

+0

मैं सहमत हूं, यह निश्चित रूप से मामला है। मुझे लगता है कि इसे App.xaml.h में डालने की सफाई के मामले में अधिक समझदारी हो सकती है, वैश्विक-एस्क्यू के लिए एक अच्छी जगह की तरह लगता है। – guysherman

+0

क्या होगा यदि आप प्रोजेक्ट एक कस्टम नियंत्रण है जिसमें कोई * .xaml.h नहीं है? अब तक pch.h को प्रदूषित करने का तरीका यह है कि मैं इसे काम करने के बारे में सोच सकता हूं। –

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