web-dev-qa-db-ja.com

Windows Phone7およびネイティブC ++ / CLI

Microsoftは最近、新しいPhone 7プラットフォーム用のツールとドキュメントをリリースしました。これは、(私のような)大きなC++コードベースを持っている人にとっては、ネイティブ開発をサポートしていません。この決定が覆されているという憶測を見つけましたが、私はそれを疑っています。そのため、C++/CLIでコンパイルするように適合させることで、このコードベースをPhone7で利用できるようにすることがどれほど実行可能かを考えていました。もちろん、ユーザーインターフェイスの部分は移植できませんでしたが、残りについてはよくわかりません。誰もが同じような経験をしましたか?重い低レベルの処理を実行するコードについては話していませんが、テンプレートとスマートポインターが非常に頻繁に使用されています。

37
Fabio Ceconello

c ++/cliは、XAMLから生成されたC#を、コードビハインドファイルのメインクラス内で使用できるマクロ定義に置き換えるトリックを使用して、理論的にはWPF/Silverlightで使用できます。私はこのテクニックを試しましたが、理論を超えてそれを実行する動機がありませんでした-私は言語を混合することに非常に満足しています。

ロジックコードの純粋なセーフモードでc ++/cliを使用する限り、これはまだ不可能かもしれませんが、誰かが今それをどのように試しているのか聞いてみたいです。 2008年にSilverlightで調査しているときに、この気が遠くなるようなことがわかりました Silverlightフォーラムのコメント

C++プロジェクトのMSILをSilverlight互換のDLLにコンパイルして、Silverlight&C++を試してみました。良いニュース:それは機能し、Silverlightプロジェクトからこのコードを呼び出すことができます。悪いニュース:C++コンパイラは、Silverlightで許可されていないMSIL命令を使用しているようです。

したがって、これを試してみると、最も単純なプログラムでも、ほとんどすぐに例外が発生します "操作によってランタイムが不安定になる可能性があります。"コンパイラーの動作がかなり異なる必要があるため、これにより、C++用のSilverlightがすぐに表示される可能性が低くなります。

11
Andy Dent

/ clr:safeオプションを使用して、C++/CLIで検証可能なマネージコードを生成できます。問題は、通常のc ++コードのほとんどがそのオプションでコンパイルされないことです。

11
adrianm

現在、C#はWinPhone7でサポートされている唯一の言語です。

MSが将来的にVBとC++/CLIのサポートを追加することを完全に期待していますが、ネイティブコードの着物をすぐに開くことは期待していません。

ネイティブコードには、特にセキュリティや信頼性など、克服できない問題が多すぎます。マネージコードは、静的な検証がはるかに簡単で、実行中の制御がはるかに簡単です。

C++コードをC#に移植することに腹を立てている場合は、MSがObjective-Cへの移行を強制しなかったことを嬉しく思います;)

私たち自身の経験から、適切に記述されたC++をC#に移植するプロセスは、実際には、最初に予想されるよりもはるかに少ない労力で済みます。確かに、学習曲線はありますが、どのポートでもそれがあります。実際、コアアプリとデータエンジンをC#に移植することで多くのメリットが得られたため、チーム全体を再構築してC#でコーディングし、必要に応じてC#をC++に移植しました。これまでのところ、2つのモジュールのみをC++に移植し、代わりに相互運用機能を介してネイティブコードからC#コードを呼び出しています。

繰り返しになりますが、WinPhoneは、最高の、生産性の高い、次世代の開発ツールとプラットフォームを使用したまったく新しいプラットフォームであることを忘れないでください。それはあなたのお父さんのWinMoではありません。

C++のサポートが非常に重要であると思われる場合は、MSに知らせてください 敬意を持って専門的に)MSDNフォーラムや近くの開発者イベントで自分の立場を述べてください。

Update1:​​2012-12-17:

ネイティブC++はまだWindowsPhone 7で正式にサポートされていませんが、Windows Phone8はネイティブC++コードをサポートするようになったため、既存のC++コードベースをWindowsPhone 8(およびWindows 8とWindowsデスクトップアプリ)に簡単に移植できます。 。

現在、Windows8/Phone8プラットフォームとAPIの間に100%の互換性はありませんが、2つのプラットフォームは今後数回のリリースでますます統合されると思います。

これは、WindowsとMicrosoftの他のグループとの間の緊密な協力に対する主要な障壁の1つが最近会社を辞めた今、特に当てはまります;)

アップデート2:2014年4月15日:

// BUILD/2014での最近の発表に従って、Windows 8.1、Windows Phone 8.1、XboxOneで実行されるC++とXAML、C#/ VBとXAML、またはJavaScriptとHTMLで「ユニバーサル」アプリの構築を開始できるようになりました。 Windows Phone 8.1ユニバーサルアプリの構築の詳細については、---(この記事を読んでください

9
Rich Turner

開発のアイデア全体はSilverlightに基づいています。このSilverlightプロジェクトには、C++で記述されたマネージDLLを問題なく追加できると思いますが、ネイティブコードを使用できませんでした。

今夜、自分のマシンにツールをインストールする予定で、これを試してみます。

3
gyurisc

MSがパスを離れて新しいものを作成することを決定した場合、それはMSの決定です。それでは、事実に直面しましょう。 Silverlightはまだ成功していません。 MSは、Apple、AndroidおよびRIM。アプリケーション開発者は、自分のアプリケーションのビジネスケースを評価し、Windows7電話のシェア獲得を信頼するかどうかを判断するだけで大​​きなシェアを失いました。私が経営している会社では、MS Windows Phone 7をこれ以上サポートしないことにしました。これは、これやその他の技術的な理由ではなく、ポートへの投資の見返りを信じていないからです。この新しいプラットフォームの市場での成功が見られれば、将来的にApple、Symbian、Andoid、MeeGoをサポートします。すべてがC/C++をサポートし、実績のあるアプリケーションコアを再利用できるようにします。だから、まったく心配する必要はありません。個人的な好みが気になる場合は、醜いUIを探してMSを追い出します。

トーマス

2
Thomas

地平線上にあります ついに

そのため、Windows Phone開発者に送信された、将来の開発の好みとXNAに関する調査は、調査では一度も言及されていません(Windows Phone開発者に送信された調査-私はそれについて言及しました)

しかし彼らは尋ねます:

モバイルアプリ/ゲームでC++をどのように使用しますか?

  • 上から下までC++であるアプリ/ゲームを開発する(UI、ビジネスロジック、およびプラットフォームAPI)
  • ビジネスロジックにC++を使用してから、プラットフォーム抽象化レイヤーを作成します
  • ビジネスロジックにC++を使用し、サードパーティのランタイムエンジンを使用する
  • C++を使いたくない
1
Özgür