Windows Phone 7 およびネイティブ C++/CLI
-
20-09-2019 - |
質問
Microsoft は最近、新しい Phone 7 プラットフォーム用のツールとドキュメントをリリースしましたが、(私のような) 大規模な C++ コードベースを持っている人にとっては残念なことに、ネイティブ開発はもうサポートされていません。この決定が覆されるという憶測を見つけましたが、私はそれを疑います。そこで私は、このコードベースを C++/CLI でコンパイルできるように調整することで、Phone 7 で利用できるようにすることがどれほど実現可能かを考えました。もちろんユーザーインターフェース部分は移植できませんでしたが、残りはよくわかりません。同じような経験をした人はいますか?重い低レベルの処理を実行するコードについて話しているのではありません。しかし、テンプレートとスマート ポインターが非常に頻繁に使用されています。
解決
C ++ / CLIは、WPF / Silverlightはファイルの背後にあるコードでメインクラス内で使用することができるマクロ定義とXAMLから生成されたC#を置き換えるのトリックを用いて理論的に使用することができます。私はこのテクニックを働いたが、理論を超えて、それを取るためにモチベーションを持っていなかった - 私はかなり満足し、混合言語だ。
。限り、あなたのロジック・コードのための純粋なセーフモードでC ++ / CLIを使用したとして、これは可能ではないかもしれないが、私は誰かが今それをしようとどのようになる聞いてみたいです。 Silverlightのためにそれを研究しながら、バック2008年に私は、Silverlightのフォーラムコメントする rel="noreferrer">この困難なの
は、私はちょうどSilverlightの互換DLLに私のC ++プロジェクトからMSILをコンパイルすることにより、シルバー&C ++、それを試してみました。良いニュース:それは動作しますが、あなたはSilverlightのプロジェクトからこのコードを呼び出すことができます。悪いニュース:C ++コンパイラは明らかにSilverlightが許可していませんMSIL命令を使用していますの はそう、あなたはほとんどすぐに例外の買ってあげる「操作は、ランタイムを不安定にする可能性があります。」の私にとって、これは、それが思われてしまいますコンパイラはかなり異なる動作をする必要がありますよう、我々は、C ++間もなく用のSilverlightが表示されますことを。の
他のヒント
あなたは/ CLRを使用してC ++ / CLIで検証可能なマネージコードを生成することができます。問題は、あなたの通常のC ++コードのほとんどは、そのオプションでコンパイルしていないということです。
C#が、現在唯一の WinPhone7のためのの言語サポートです。
私は完全にMSがあまりにも将来的にはVBおよびC ++ / CLIのサポートが追加されますが、いつでもすぐにネイティブコード着物を開くことを期待していないことを期待しています。
ネイティブコードはちょうど克服するためにあまりにも多くの問題は、特になど、セキュリティ、信頼性、周りのコードを静的に検証することがはるかに容易と走行中に制御することがはるかに簡単である管理しています。
あなたがC#2にC ++コードを移植について動揺している場合は、単にMSは、Objective-Cのに移動する必要があなたを強制するものではありませんでした喜んでいる;)
私たち自身の経験から、C#によく書かれたC ++の移植のプロセスへは、実際には最初の期待に1つのかもしれないよりはるかに少ない労力を要します。確かに、そこに学習曲線ですが、あなたはどのポートであることがあります。私たちは、実際に戻ってC ++、必要に応じてではなく、他の方法で回避する当社のC#C#とポート内のコードに、我々は、箔押し再度のC#への当社のコアアプリとデータエンジンを移植するからそんなに利益私たちのチーム全体を持って!これまでのところ、我々は2つのだけのモジュールのバック++ Cに移植され、代わりに相互運用を経て、当社のネイティブコードから、当社のC#コードを呼び出しました。
ここでも、覚えて、WinPhoneは品種の最高の生産性の高い、次世代の開発ツールやプラットフォームを使用して新しいプラットフォームです。それはあなたの父のWindows Mobile搭載ではありません。
C ++のサポートは、あなたが決定的に重要であることを見つける何か、そしてMSが知っていることを確認している場合 - 。(敬意と専門的に)MSDNフォーラムでは、あなたの近くに開発者向けイベントで自分の位置を述べる。
アップデート1:2012年12月17日:
は、まだ正式のWindows Phone 7でサポートされていませんネイティブC ++は、Windowsの携帯電話8は現在、ネイティブC ++コードをサポートしていますがこれのWindows Phone 8(同様のWindows 8とWindowsにすることができますより簡単にポート既存のC ++コードベース(S)デスクトップアプリ)。
がありませんが、100%Windows8 / Phone8プラットフォーム間の互換性とAPIが今だ、私は2つのプラットフォームがますますリリースの次のカップル上に一体になることを期待しています。
);これは、MicrosoftのWindowsや他のグループの間のより緊密な協力へのキー障壁の一つは、最近会社を辞めた今は特にそうです
アップデート2:2014年4月15日:
// BUILD / 2014での最近の発表を1として、あなたは今のWindows 8.1、Windows Phoneの8.1とXbox上で実行されますC ++&XAML、C#/ VB&XAMLまたはJavaScript&HTMLで "ユニバーサル" アプリケーションの構築を開始することができます1! Windows Phone 8.1ユニバーサルアプリ、の 構築の詳細についてはののこの記事を読んでます。
全体の開発のアイデアは、Silverlightの上に構築されています。私はあなたがこのSilverlightのプロジェクトに何の問題もなくC ++で書かれたあなたのマネージDLLを追加することができると思うが、それは、ネイティブコードを使用することができませんでした。
私は自分のマシン上で今夜のツールをインストールする予定ですし、これを試してみます。
MSがパスを残して、何か新しいものを作成することを決定した場合、それはMSの決定で結構です。それでは、事実に直面してみましょう。 Silverlightはまだ成功ではありません。 MSが原因アップル、AndroidやRIMに大きなシェアを失いました。アプリケーション開発者は、単に彼らはWindows 7の電話やないのシェア増加に信頼している場合、自分のアプリケーションのためのビジネスケースを評価して決定する必要があります。私は実行することを会社のために、私たちはそれ以上のMSのWindows Phone 7をサポートしないことに決めた、ではないので、このまたは他の技術的な理由のが、それは、我々はポートのための投資のリターンを信じていないという理由だけで。 我々はこの新しいプラットフォームの市場での成功を見れば、将来的にアップル、シンビアン、AndoidとのMeeGoをサポート開始します。すべてのサポートC / C ++および当社の実績あるアプリケーションのコアを再利用するために私達を可能にします。では、なぜ全く心配。個人的な技術の好みはゲートすべきではありません。個人的な好みが心配ならば、私は自分の私には醜い探してUIのためのMSを追い出すでしょう。
トーマス
それは地平線上にあります ついに!
そこで、Windows Phone開発者に将来に関するアンケートを送信 開発設定と XNA は、調査で一度も言及されていません (A Windows Phone開発者に送信された調査-私はそれを言及しましたか)
しかし、彼らは次のように尋ねます。
モバイル アプリ/ゲームで C++ をどのように使用したいですか?
- 上から下までC ++であるアプリ/ゲームを開発する(UI、ビジネスロジック、プラットフォームAPI)
- ビジネス ロジックに C++ を使用し、プラットフォーム抽象化レイヤーを作成します
- ビジネス ロジックに C++ を使用する サードパーティのランタイム エンジンを使用する
- C++は使いたくない