Windows Phone 8 RunTimeComponent中的“公共成员签名包含本机类型”错误

时间:2013-02-28 07:04:52

标签: visual-c++ windows-phone-8 windows-phone winprt

我正在尝试创建一个支持Windows Phone 8的运行时组件。 该计划的简要说明如下:

  1. 应用程序(C#)将填充ref struct A
  2. 中的一些数据
  3. 它将使用ref struct A的对象调用ref class VVoiP的init API。
  4. Ref类VVoip需要有一个B类对象数组,以便它可以有多个实例。
  5. C#代码:

    using TestWRC;
    namespace TestPrj
    {
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                VVoIP v1 = new VVoIP();
                A a1 = new A();
                a1.a = 10;
                v1.init(a1);
            }
        }
    }
    

    C ++代码:

        namespace TestWRC
        {
        public ref struct A sealed
            {
        public:
            property int a;
        };
    
        struct B {
            A^ A_obj;
        };
    
        public ref class VVoIP sealed
        {
        private:
            B array[3];   /* Array of object to have multiple instance */
    
        public:
            void init(A a1);
        };
        }
    
    
    using namespace TestWRC;
        void VVoIP::init(A a1)
        {
        array[0].A_obj->a = a1.a;  /* Filling local array with initialized data*/
        }
    

    来自上述代码的以下错误:

      

    错误C3992:'init':公共成员的签名包含无效类型'TestWRC :: A'

    我是Windows手机8的新手,有人请告诉我这是什么错误,以及如何纠正这个问题。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

您的公共签名需要指定这是一个Windows运行时引用计数对象,因此您需要使用hat(^)语法声明。

void init(A^ a1);