先说结论(不见得是最终正确的结论,不过google了一晚上也没有查出个所以然来,即便有解决方法我也认为是微软傻x):

首先c#和c++理所应当的不应该在同一个工程中,而只能是同一个工程的两个项目。只能是c++调用c#,而c#不能调用c++。(细节后面再说)。也就是说,唯一的交互途径就是创建一个基于c#的应用程序,然后再创建一个c++的动态库,让c#调用c++的代码。

这个方案也就是c++ d3d+xaml的解决方案。用d3d来实现渲染,xaml(c#)来实现ui和上层逻辑。

如果你的游戏是基于d3d+xaml的解决方案的话,那么c++代码中还是可以调用到c#的,就是实现一个ICallback的接口,然后c#代码中注册给c++。这里依赖两件事情,一个是c#可以调用c++代码,一个是程序是基于c#的,也即有合适的实际可以在c#中注册Callback给c++。

如果你的游戏是基于native c++(纯c++框架)的,那么很遗憾,你将无法使用现有的c#的库。(WinRT不允许使用CLI,最后一个途径也被封死了。。。)

我就不明白了,java都可以跟c++进行交互,那么c++调用c#的代码咋就那么难呢?传说是因为效率因素,我去,效率与否是使用者说了算的,功能都实现不了了谈什么效率???

如果你认为这个无关紧要,那么我就列举两个让我恶心到家的功能吧:

1、使用native c++无法分析内存,一、没有合适的工具(只有xaml框架的程序才能使用profile里面的内存分析),二、显示内存占用的代码是c#的,无法在c++下进行调用。这样我的游戏在wp8下的运行情况只能祈求上苍了。 而且微软还恶心的默认只给程序分配150mb内存,即便手机有1g内存,超过150mb也会提示无法分配内存,这样我只有两个选择一是明确抛弃低端机器,lumia520什么的都去死吧,这是为了能够在lumia920上面正常运行所做的牺牲。 二是认为自己优化的到位了,但是如果万一游戏运行时占用的内存超过150mb那么520和920两个难兄难弟一起挂(共产主义精神)

2、友盟的统计分析sdk无法使用。基本上现在大多数第三方sdk都是c#的代码,统统放弃吧。

关于WinRT中c++和c#相互调用的问题的更多相关文章

  1. vue中的父子组件相互调用

    vue中的父子组件相互调用: 1.vue子组件调用父组件方法:子组件:this.$emit('xx'); 父组件:定义yy方法,并在引用子组件时传参,如@xx="yy" 2.vue ...

  2. java 中 this 和 super 说明及在构造器中super()和this()相互调用执行顺序

    this this 表示当前对象 使用上细分的话,this有 this. 和this()的使用情况 ,下面我们开始细撸 this . 使用场景一: 在成员方法中,this.变量名 指带当前对象的变量, ...

  3. C++和C中的函数如何相互调用

    今天笔试遇到的一题,当时就写了在函数前声明为C,按C编译. 首先是在C中调用C++函数,包括普通函数,重载函数以及成员函数. 对于普通函数,在C++中声明为extern "C",在 ...

  4. delphi中WEBBrowser网页html相互调用(一)

    1.基本操作1.1.激活 var doc,url:Olevariant ; begin url:='about:blank' ;//或者一个有实际意义的url WebBrowser1.Navigate ...

  5. vue中组件之间的相互调用,及通用后台管理系统左侧菜单树的迭代生成

    由于本人近期开始学习使用vue搭建一个后端管理系统的前端项目,在左侧生成菜单树的时候遇到了一些问题.在这里记录下 分析:由于本人设定的菜单可以使多级结构,直接使用vue的v-for 遍历并不是很方便. ...

  6. ASP.NET中 前后台方法的相互调用

    后台调用前台js方法: this.Page.ClientScript.RegisterStartupScript(this.GetType(), "js", "ShowM ...

  7. delphi中EmbeddedWB网页html相互调用(二)

    我们可以通过控件 EmbeddedWB_D5-D2010_Version_14.69.1 来响应html事件,还可以自定义html响应哪些html元素. 控件下载 点击下载 里面有demos文件夹大家 ...

  8. Unity3D中C#和js方法相互调用

    通过查找资料,Unity3D中C#和js要相互调用彼此的方法,js文件必须放在"Standard Assets". "Pro Standard Assets" ...

  9. WebView中Js与Android本地函数的相互调用

    介绍 随着Html5的普及,html在表现力上不一定比原生应用差,并且有很强的扩展兼容性,所以越来越多的应用是采用Html与Android原生混合开发模式实现. 既然要实现混合开发,那么Js与Andr ...

随机推荐

  1. asp.net 中 .ASPX 与.CS文件的关系

    .aspx文件继承自.cs文件 虽然一个 Web 窗体页由两个单独的文件组成,但这两个文件在应用程序运行时形成了一个整体.项目中所有 Web 窗体的代码隐藏类文件都被编译成由项目生成的动态链接库 (. ...

  2. ANDROID_MARS学习笔记_S02_011_ANIMATION_LayoutAnimationController

    一.简介 二.代码1.xml(1)activity_main.xml <ListView android:id="@id/android:list" android:layo ...

  3. LinearLayout按下(pressed)或获取焦点(focused)时背景设置不同颜色或图片

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id=&qu ...

  4. /MD, /MDD, /ML, /MT,/MTD(使用运行时库)

    1. VC编译选项 多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd) 2. C 运行时库                                 ...

  5. jni.h源码

    /* * jni.h * Java Native Interface. * * Copyright (c) 1996, 1997 * Transvirtual Technologies, Inc. A ...

  6. Web服务器排行:Nginx超越Apache 成为全球

    Apache(34.5%)第一名的位置.不过,纵观全球,Apache仍然是最受欢迎的Web服务器,有65.3%的网站使用. 在排名前100万的网站中,主流服务器仍为Apache,占据了60.6%的份额 ...

  7. ACM ICPC Asia Regional 2011 Kuala Lumpur C题

    看了逆波兰表达式之后,发现真是强悍的数据结构,栈的应用怎么感觉一辈子也学不完了呢 后缀表达式即逆波兰表达式,就是将所有的运算符按照一定的等级全部都安排到数字的后面去,实现正确的运算法则. OK,代码要 ...

  8. 客户端验证的极品--jQuery.validator

    最近在做一个用户注册登录的页面,资料查寻过程中发现了一个非常不错的客户端验证的极品-jQuery.validate.它是著名的JavaScript包jQuery的一个插件,其实它还有其它的一些插件应该 ...

  9. HTML特殊字符大全2

    HTML的特殊字符我们并不常用,但是有的时候却要在页面中用到这些字符,甚至有时候还需要用这些字符来实现某种特殊的视觉效果.现在,国外的设计师Neal Chester整理了一份很全的特殊字符集,我觉得这 ...

  10. C#线程篇---Task(任务)和线程池不得不说的秘密(5)

    在上篇最后一个例子之后,我们发现了怎么去使用线程池,调用ThreadPool的QueueUserWorkItem方法来发起一次异步的.计算限制的操作,例子很简单,不是吗? 然而,在今天这篇博客中,我们 ...