首页 > Windows开发 > 详细

Windows Phone中使用Native Code

时间:2014-04-04 04:37:29      阅读:376      评论:0      收藏:0      [点我收藏+]
  • 前言

     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项目。

    bubuko.com,布布扣

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

bubuko.com,布布扣
#pragma once

namespace TestComponent
{
    public ref class Test sealed
    {
    public:
        bool IsTest();
    };
}
bubuko.com,布布扣

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

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

bubuko.com,布布扣
#include "pch.h"
#include "TestComponent.h"

using namespace TestComponent;

bool Test::IsTest()
{
    return true;
}
bubuko.com,布布扣

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

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

    上面只给出了一个非常简单的例子来描述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

 

Windows Phone中使用Native Code,布布扣,bubuko.com

Windows Phone中使用Native Code

原文:http://www.cnblogs.com/ghostwutao/p/3642992.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!