UWP C# 调用 C++/CX

创建一个UWP项目

然后创建一个通用C++运行时项目

右键点击C++项目,添加一个C++类

在头文件中定义一个类

#pragma once


namespace ImageFactoryRT
{
    public ref class ImageSRC sealed
    {
    private:
        Windows::Foundation::Collections::IVector<int>^ colors;
        int width;
        int height;
    public:
        ImageSRC();
        void LoadImageSRC(Windows::Foundation::Collections::IVector<int>^ mcolors, int mwidth, int mheight);
    public:
        // int = byte[A] byte[R] byte[G] byte[B]
        property Windows::Foundation::Collections::IVector<int>^ Colors
        {
            Windows::Foundation::Collections::IVector<int>^ get()
            {
                return colors;
            };
            void set(Windows::Foundation::Collections::IVector<int>^ s)
            {
                colors = s;
            };
        }
        property int Width
        {
            int get()
            {
                return width;
            };
            void set(int s)
            {
                width = s;
            };
        }
        property int Height
        {
            int get()
            {
                return height;
            };
            void set(int s)
            {
                height = s;
            };
        }
    };
    ImageSRC::ImageSRC()
    {
    }
    void ImageSRC::LoadImageSRC(Windows::Foundation::Collections::IVector<int>^ mcolors, int mwidth, int mheight)
    {
        this->Colors = mcolors;
        this->Width = mwidth;
        this->Height = mheight;
    }
}

在cpp文件中引入

#include "pch.h"
在UWP项目中引入C++项目

在UWP C#中就可以直接使用 C++中定义的类了

    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            ImageFactoryRT.ImageSRC imageSRC = new ImageSRC();
            List<int> list = new List<int>();
            list.Add(3);
            list.Add(2);
            list.Add(1);
            imageSRC.LoadImageSRC(list, 3, 2);
            imageSRC.Width = 1;
            int h = imageSRC.Height;
        }
    }

 

这样做的主要目的是 通过 [标准C++] ==> [C++/CX] ==> [UWP C#] 可以封装 标准的C++类库 来使用。

posted @ 2018-01-08 15:46  gaobowen  阅读(2104)  评论(0编辑  收藏  举报