Native code on Windows Phone 8(转)
Windows Phone 8 introduces the ability to use native code to implement Windows Phone. In this section, we explain how you can use C++ in your app, and provide some recommended scenarios.
When to use native code in your app
All Windows Phone 8 apps can use native code but not all apps need to. For many app scenarios, a managed app provides the same features and performance as an app that uses native code. The following are reasons why you may want to use native code in your app.
- Portability – If you are targeting multiple platforms, it may make sense to implement your core functionality in a native library that can be used on all of the platforms you are targeting.
- Direct3D graphics – If your app needs to use Direct3D to render graphics to the screen, this must be done using native code.
- Performance – For some scenarios, you can achieve a performance benefit in large computation tasks by using native code. Note that there is overhead associated with the interop between native and managed code. This overhead may cancel out any performance gains from using native code, so don’t assume that using C++ will automatically increase the performance of your app.
Windows Phone 8 supports Visual C++ 2012. This is the full version of C++ that is available on the desktop, and the two versions use the same compiler and IDE. This means that your phone app can reuse existing C and C++ libraries that you have developed for other platforms, in addition to third-party libraries and middleware.
Windows Phone 8 supports a limited set of COM and Win32 APIs that are available on the desktop. For info about which APIs are supported, see Win32 and COM API for Windows Phone 8.
All Windows Phone 8 apps also can use the Windows Phone Runtime, which is a phone-specific implementation of the Windows Runtime, which is used for desktop apps. The Windows Phone Runtime provides infrastructure and an API library. The infrastructure is the core plumbing of the language, including type activation, memory management, a common type system, and a standard programming model that encompasses objects, methods, events, exceptions, and so on. The Windows Phone Runtime library contains phone-specific APIs for features such as speech, managing contacts, location, sensors, networking, and more. In addition, the library supports a subset of the Windows Runtime library that’s available on the desktop. All of these APIs are projected into Visual Basic, C#, and C++ on the phone. For more info about the APIs supported on the phone, see Windows Phone Runtime API.
The Windows Phone Runtime also enables interop between managed and native code. You can add a Windows Phone Runtime component implemented in C++ to your project and then access the objects and methods in the component directly from managed code. Note that there is some overhead cost when using Windows Phone Runtime because of things like reference counting and array bounds checking. For this reason, we recommend that you use it only on the boundary between managed and native. Especially if you are implementing a computation scenario in which performance is key, you should write your computation library in straight C or C++ and then create a Windows Phone Runtime wrapper that can be called from managed code.
Direct3D graphics on Windows Phone
Windows Phone 8 introduces the ability to use Direct3D in your app, and Direct3D code must be written in C++. You can use the XAML and Direct3D app and the Direct3D with XAML app project templates to create hybrid apps in which the UI is defined in XAML with managed (C# or Visual Basic .NET [VB.NET]) code-behind pages. With these apps, a Windows Phone Runtime component contains the native Direct3D code, which renders to the screen within or behind the XAML UI. The Direct3D app project template creates a pure native app that uses no XAML or managed code. Because of this, there are several feature and app model differences between this type of app and a XAML-based app. For guidance on determining which app type is right for your app, see Choosing the right project template for your game for Windows Phone 8.
For info about Direct3D API support on Windows Phone, see Direct3D for Windows Phone 8.
Unsupported native code scenarios
The following uses of native code are not supported for Windows Phone apps.
- Native code can’t be called from an XNA app.
- Windows Phone 8 doesn’t support the XAML UI with C++ code-behind app model that is supported for Windows Store apps.
- Native code can’t be called from Windows Phone OS 7.0 or Windows Phone OS 7.1 apps. Only Windows Phone 8 apps can use this feature.
from http://msdn.microsoft.com/en-US/library/windowsphone/develop/jj681687(v=vs.105).aspx
Native code on Windows Phone 8(转)的更多相关文章
- Windows Phone中使用Native Code
前言 Windows Phone 8 SDK中一个非常有用的特性,就是可以通过Windows Phone Runtime Component (WinPRT)使用C++代码来处理运算量大的任 ...
- NDK开发历程(一):android native code的调试方法
引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...
- NDK环境搭建(Native Code的编译,不需要Cygwin)
分类: android2013-06-21 15:49 475人阅读 评论(0) 收藏 举报 Android NDK 目录(?)[-] System and Software Requirements ...
- DEPLOYING NATIVE UWP (UNIVERSAL WINDOWS PLATFORM) APPS FOR JAVA DEVELOPERS & PUBLISHING THEM TO THE MICROSOFT STORE
原文: DEPLOYING NATIVE UWP (UNIVERSAL WINDOWS PLATFORM) APPS FOR JAVA DEVELOPERS & PUBLISHING THEM ...
- [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)
今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP因為這篇文章至少講解 ...
- 打印发现function toUpperCase() { [native code] }
var s='hello' undefined s.toUpperCase function toUpperCase() { [native code] } s.toUpperCase() " ...
- 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native
[源码下载] 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native 作者:web ...
- [Cordova] 无法编译Visual Studio项目里Plugin副本的Native Code
[Cordova] 无法编译Visual Studio项目里Plugin副本的Native Code 问题情景 开发Cordova Plugin的时候,开发的流程应该是: 建立Cordova Plug ...
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...
随机推荐
- 【代码笔记】iOS-判断有无网络
一,工程图. 二,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIVi ...
- 【读书笔记】iOS网络-使用Game Kit实现设备间通信
Apple的Game Kit框架可以实现没有网络状况下的设备与设备之间的通信,这包括没有蜂窝服务,无法访问Wi-Fi基础设施以及无法访问局域网或Internet等情况.比如在丛林深处,高速公路上或是建 ...
- 网络热恋之SDWebImage
SDWebImage-master 是一个非常强大的三方. 当需要应用SDWeb时把文件夹里的SDWebImage文件夹放入工程里. 在需要使用网络获取图片的文件里进入头文件#import " ...
- 如何退出调起多个Activity的Application?
1.记录打开的Activity 每打开一个activity,即记录下来,需要关闭时,关闭每一个activity即可. 2.发送特定的广播 在需要结束应用时,发送一个特定广播,每个activity收到此 ...
- 学习Entity Framework 中的Code First
这是上周就写好的文章,是在公司浩哥的建议下写的,本来是部门里面分享求创新用的,这里贴出来分享给大家. 最近在对MVC的学习过程中,接触到了Code First这种新的设计模式,感觉很新颖,并且也体验到 ...
- Sandcastle----强大的C#文档生成工具
最近客户索要产品的二次开发类库文档,由于开发过程中并没有考虑过此类文档,而且项目规范比较,持续时间比较长,经手人比较多,还真是麻烦,如果人工制作文档需要是一个比较大的工程.还好有这个文档生成工具,能够 ...
- Java Se: Logging 框架说明
Java Logging 用惯了log4j等日志工具,竟然不知Java还自带了个log工具.今天有空了就来了解一下. 先来看一个简单的例子: public class SystemTest { pri ...
- linux 源码安装mysql 5.5
今天在ubuntu和CentOS下,用源码反复安装了许多次mysql,趁还没忘记,赶紧记下来... 在ubuntu和CentOS下安装过程倒是没什么差别. 0.下载源码, ...
- RabbitMQ与Redis队列对比
本文仅针对RabbitMQ与Redis做队列应用时的情况进行对比具体采用什么方式实现,还需要取决于系统的实际需求 简要介绍 RabbitMQ RabbitMQ是实现AMQP(高级消息队列协议)的消息中 ...
- linux原始套接字(2)-icmp请求与接收
一.概述 上一篇arp请求使用的是链路层的原始套接字.icmp封装在ip数据报里面,所以icmp请 ...