代码之家  ›  专栏  ›  技术社区  ›  Fabio Ceconello

Windows Phone 7与本机C++/CLI

  •  37
  • Fabio Ceconello  · 技术社区  · 14 年前

    微软最近发布了其新手机7平台的工具和文档,这让那些拥有大C++代码库(如我)的人感到沮丧的是,他们不再支持本机开发。虽然我发现有关这一决定的猜测被推翻了,但我对此表示怀疑。所以我在想,如何通过把它编译成在C++下编译,使这7个电话可以使用。当然,用户界面部分无法移植,但我不确定其他部分。有没有人有类似的经历?我不是说代码可以做大量低级的工作,但是模板和智能指针的使用非常频繁。

    6 回复  |  直到 9 年前
        1
  •  11
  •   Andy Dent    14 年前

    C++/CLI在理论上可以与WPF/Silverlight一起使用,该方法使用从宏代码中替换的XAML生成的C语言的技巧,该宏定义可以在代码隐藏文件中的主类中使用。我研究出了这项技术,但还没有动力超越理论——我很乐意混合语言。

    至于在逻辑代码的纯安全模式下使用C++,这可能还是不可能的,但我现在很想听听有人如何尝试。在2008年为Silverlight进行研究时,我发现这令人望而生畏 silverlight forum comment :

    我只是给了Silverlight & C++,它是通过将我的C++项目中的MSIL编译成Silverlight兼容的DLL来尝试的。好消息:它可以工作,您可以从Silverlight项目调用此代码。坏消息是:C++编译器显然使用了Silverlight不允许的MSIL指令。

    所以,如果您尝试这样做,即使是使用最简单的程序,也几乎会立即得到异常 “操作可能会破坏运行时的稳定性。” 对我来说,这使得我们很快就不太可能看到Silverlight,因为编译器需要表现得有点不同。

        2
  •  11
  •   adrianm    14 年前

    在C++/CLI中,可以使用/CLR:FAULT选项生成可验证的托管代码。问题是,大多数普通C++代码不会用那个选项编译。

        3
  •  9
  •   Rich Turner    10 年前

    C目前是唯一 支持 WinPhone7的语言。

    我完全希望MS将来还会增加对VB和C++/CLI的支持,但是不要期望很快打开本地代码Kimoo。

    本机代码有太多的问题需要解决,特别是在安全性、可靠性等方面。托管代码更容易静态验证,而且在运行时更容易控制。

    如果你对C++代码移植到C语言感到不安,只要高兴,MS没有强迫你移动到Objtovi-C;

    从我们自己的经验来看,将C++编写成C语言的过程实际上比人们最初预期的要少得多。当然,有一个学习曲线,但是你有任何端口。事实上,我们把核心应用程序和数据引擎移植到C语言中,得到了很大的好处,我们重新设计了整个团队在C语言中进行编码,并将我们的C语言返回到C++,而不是其他方法。到目前为止,我们只将两个模块移植回C++,并通过互操作来从本地代码调用我们的C代码。

    请记住,Winphone是一个全新的平台,使用了同类最佳、高效的下一代开发工具和平台。这不是你父亲的温莫。

    如果对C++的支持是最重要的,那么确保MS知道——(尊敬地和专业地)陈述你在MSDN论坛和你附近的开发者事件中的位置。

    更新时间:2012-12-17:

    虽然本地C++还没有正式支持Windows Phone 7,但Windows Phone 8现在支持本机C++代码,这样您就可以更容易地将现有的C++代码库(S)移植到Windows Phone 8(以及Windows 8和Windows桌面应用程序)。

    虽然目前Windows8/Phone8平台和API之间没有100%的兼容性,但我预计这两个平台在接下来的两个版本中会越来越集成。

    这一点尤其正确,因为Windows与微软其他集团之间密切合作的主要障碍之一最近离开了微软;)

    更新时间:2014年4月15日:

    根据最近在//Bug/2014发布的公告,您现在可以开始在C++&AMXAML、Cy/V/AMP、XAML或JavaScript和HTML中构建“通用”应用程序,这些程序将运行在Windows 8.1、Windows Phone 8.1和Xbox One上!有关构建Windows Phone 8.1通用应用程序的详细信息, read this article .

        4
  •  3
  •   gyurisc    14 年前

    整个开发理念都建立在Silverlight上。我认为您可以添加您的管理DLL写在C++没有任何问题到这个Silverlight项目,但它不能使用本机代码。

    我计划今晚在我的机器上安装工具,并将试用这个。

        5
  •  2
  •   Thomas    14 年前

    如果微软决定离开这条道路并创造出新的东西,这是微软的决定。让我们面对现实。Silverlight还没有成功。由于苹果、安卓和RIM,微软损失了相当大的份额。应用程序开发人员只需为自己的应用程序评估业务案例,并决定是否信任Windows7 Phone的共享收益。对于我经营的公司,我们决定不再支持MS Windows Phone 7,不是因为这个或其他技术原因,而是因为我们不相信我们对港口的投资回报。 如果我们看到这个新平台在市场上取得成功,我们将在未来开始支持苹果、塞班、安多迪和米戈。所有支持C/C++,使我们能够重用我们已证明的应用程序内核。所以,为什么要担心呢?个人技术偏好不应该是门控。如果个人喜好让我担心,那么我会把微软踢出去,因为他们对我来说是丑陋的用户界面。

    托马斯

        6
  •  1
  •   Özgür    12 年前

    它在地平线上 finally !

    因此,一份向Windows Phone开发者发送的关于他们未来的调查 调查中没有提到开发偏好和XNA(a 发送给Windows Phone开发人员的调查-我提到过吗)

    但是他们会问:

    在移动应用程序/游戏中,你更喜欢如何使用C++?

    • 开发从上到下的C++应用程序/游戏(UI、业务逻辑和平台) API)
    • 使用C++实现业务逻辑,然后编写平台抽象层
    • 使用C++实现业务逻辑,使用第三方运行时引擎
    • 我不想用C++