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
Windows Phone中使用Native Code的更多相关文章
- Native code on Windows Phone 8(转)
Windows Phone 8 introduces the ability to use native code to implement Windows Phone. In this sectio ...
- 在Windows Live Writer中插入C# code
平时都是用Windows Live Writer写博客,发布博客.遇到需要插入代码都是先在notepad中写好,或者是拷贝到notepad,再从notepad中拷到Windows Live Write ...
- [原]iOS中 Web 页面与 Native Code 的一种通信方式
在 iOS 开发中,Web 页面与 Native Code 通信可以分为两个方面: 1.Native Code 调用 Web 页面的方法:主要是调用页面中的 Javascript 函数. 2.Web ...
- NDK开发历程(一):android native code的调试方法
引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...
- java中的native方法和修饰符(转)
Java中的native修饰符 今天偶然看代码,发现别人有这样写的方法,并且jar里面有几个dll文件,比较奇怪,于是把代码打开,发现如下写法. public native String GSMMod ...
- Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)
文章目录: 1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Ap ...
- Java中的native方法
博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地 ...
- Java中的native关键字与JNI
一.先说一下大致的意思: jdk提供的类库源代码中有一些方法没有实现,这些方法前有native关键字,如object类中的 : native Object clone() throws CloneNo ...
- NDK环境搭建(Native Code的编译,不需要Cygwin)
分类: android2013-06-21 15:49 475人阅读 评论(0) 收藏 举报 Android NDK 目录(?)[-] System and Software Requirements ...
随机推荐
- hadoop fs管理文件权限
sudo addgroup Hadoop#添加一个hadoop组sudo usermod -a -G hadoop larry#将当前用户加入到hadoop组 修改hadoop目录的权限sudo ch ...
- Tasks、 activity 及 activity stack
一. Activity的四种加载模式 Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题.直到后来随着不断的深入,才发现原来Activity的加载 ...
- 在Windows程序中启用console输出-2016.01.04
在某些时候,我们可能需要在Win32窗口应用程序中打开控制台窗口,打印一些消息,或者作为当前程序的另外一个人机交互界面,或者为了帮助调试程序.为了达到这种效果,需要了解函数AllocConsole和C ...
- JS基础学习1——什么是基础js类和原型?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型
2016-04-09 21:10:24 本文原创受版权保护,严禁转载. 请大家不要用于商业用途,支持正版,大家都是做软件的,知道开发一套软件实属不易啊! 今天看到了一个很有趣并且很有用的辅助 ...
- JSF Action 与ActionListener的区别
JSF Action 与ActionListener的区别 标签: 杂谈 事件 检验 参数 事件产生 页面跳转 Action 有 无参数,不传入当前控件,有返回值 当铵钮被单击 ...
- Face++云相册应用IOS源码
该源码是一个不错的相册应用,Face++云相册应用源码,以人脸识别作为用户注册和登录的依据,登录后可以进入用户的云相册空间,并对相册进行上传图片或删除图片,另添加了分享功能. <ignore_j ...
- 【风马一族_xml】Schema--- xml的约束技术
Schema 是xml的约束技术,出现的目的是为了替代dtd 本身也是一个xml,非常方便使用xml的解析引擎进行解析 对名称空间有非常好的支持 支持更多的数据类型,并且支持用户自定义数据类型 可以进 ...
- 显示或隐藏一个Grid
The Rowset class contains two methods that can be used to show and hide all rows: ShowAllRows() Hide ...
- python解析xml模块封装代码
在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...