zoukankan      html  css  js  c++  java
  • Windows Phone中使用Native Code

    • 前言

         Windows Phone 8 SDK中一个非常有用的特性,就是可以通过Windows Phone Runtime Component (WinPRT)使用C++代码来处理运算量大的任务。这样一来Windows Phone应用的性能会得到相应的提升,而且增加了代码的可移植性,有些使用C++写的类库也可以直接调用。WinPRT在内部封装了原生的C++代码,只暴露了用于WinRT类型的接口,从而在C#代码中方便的调用native code。WinPRT是C#代码到C++代码的中间层,调用顺序是C#->(C++/CX)->C++。C++/CX是C++代码的扩展(Visual C++ component extensions),使用C++/CX编写WinPRT来和Visual C#交互。下面就来看看WinPRT的具体使用过程。

          首先添加一个WinPRT项目。

       

           添加一个Test类,打开TestComponent.h文件添加如下的代码。

    #pragma once
    
    namespace TestComponent
    {
        public ref class Test sealed
        {
        public:
            bool IsTest();
        };
    }

          这里我们创建了一个可以在其他语言环境下实例化的活跃类,通常被称为ref class。一个WinPRT可以包含多个活跃的公共类,在C#中可以通过new关键字来创建该组件下类的实例。一个活跃类必须被声明为public ref class sealed。ref关键字告诉编译器,我们正在创建一个WinPRT类型的类,sealed关键字代表该类是不可以被继承的。

           打开TestComponent.cpp类,添加头文件中方法的实现。

    #include "pch.h"
    #include "TestComponent.h"
    
    using namespace TestComponent;
    
    bool Test::IsTest()
    {
        return true;
    }

         在其他项目中添加以上WinPRT的引用后就可以在托管代码中使用了。

    private void Button_Click(object sender, RoutedEventArgs e)
    {
       var test = new TestComponent.Test();
       var result = test.IsTest();
       //
    }
    • 总结

        上面只给出了一个非常简单的例子来描述WinPRT的使用过程,在我们具体的使用过程中会遇到很多参数类型转换的问题,即把C#类型的数据转换成在C++/CX中正确的类型。

    Refernce:

    Native code for Windows Phone 8

    Visual C++ Language Reference (C++/CX)

    Windows Phone Natives - How to Leverage Native Code on Windows Phone

  • 相关阅读:
    vb中5种打开文件夹浏览框的方法总结(转)
    js 日期
    正则表达式
    HTML中meta的作用
    Java操作ElasticSearch
    Elastic安装
    Elasticsearch基本操作
    ubootfs2410移植(转)
    内核驱动系列字符设备驱动流程
    linux 内核移植
  • 原文地址:https://www.cnblogs.com/ghostwutao/p/3642992.html
Copyright © 2011-2022 走看看