3

C# で作成したプロジェクトの終わりに近づいています。残念ながら、ターゲット ハードウェアには C/C++ 用のコンパイラしか付属していません。私の父は組み込みプログラマーなので、ハードウェアと統合するために必要なコードを作成しますが、それまでの間、言語を翻訳する方法を見つける必要があります。私は現在資金が非常に逼迫しているため、無料の翻訳者は非常に好まれています。

私は C++ に堪能ではありませんが、汚い翻訳を使用すれば、それを実行するために必要なもののほとんどを理解できるはずです。

編集:

ターゲット プラットフォームはmbed マイクロコントローラーです。

4

8 に答える 8

14

しないでください。これは機能しません。

C#にはガベージコレクターがあります。CとC++はそうではありません。オブジェクトの割り当て方法を再考し、C++でリリースする必要があります。

おそらく、プロジェクトはすでに完了しているので、C /C++での書き換えは非常に簡単です。あなたはすでに問題を理解していて、以前に一度それを表現しました。

于 2010-11-10T09:34:14.200 に答える
6

C# から C++ への 1 対 1 のマッピングはありません。プログラミング モデルとプラットフォームは、下位レベルでは大きく異なります。たとえば、メモリ管理を考えてみましょう。

最善の方法は、アプリケーションを書き直すか、.NET Compact Frameworkまたは.NET Micro Frameworkをハードウェアで実行できるようにすることです。

編集:
ハードウェアがサポートされていない場合、少なくとも .NET Micro Framework には移植キットがあることに注意してください。

于 2010-11-10T09:38:54.353 に答える
3

設計はアプリケーション開発の半分の戦いであるため、C#プロトタイプは十分に役立つはずですが、適切な自動翻訳ツールを見つけることはまずありません。.NETクラスライブラリ、特に基盤となるOS APIに関連する部分を多用していない場合は、C#を手動でC++に簡単に変換する必要があります。コード本体の構文とセマンティクスは非常に似ています。より異なるのは、クラス定義などの囲んでいる構造要素です。

必要な作業はアプリケーションコードのサイズによって異なりますが、その多くは機械的なものです。最大の違いは、自動ガベージコレクションがないため、C++のメモリ管理にさらに注意する必要があることです。

于 2010-11-10T14:50:35.063 に答える
2

C または C++ を学習します。代替手段はありません。

どちらの言語も C# や .NET とは根本的に異なり、自動変換はできません。(もしそうなら、「それを実行するために必要なもののほとんどを理解する」ことはできません。完全に認識できないコードになり、読み取りや拡張が不可能になります。)

動作する C または C++ プログラムを作成するには、C または C++ プログラマーがコードを作成する必要があります。良いニュースは、それほど難しいことではないということです。C++ 言語の隅々まで学習する必要はありません。しかし、基本を学ぶ必要があります。

すぐに軌道に乗る方法を探している場合は、言語がはるかに小さく単純であるため、C を学習することをお勧めします。しかし、C++ も実行可能です。15 分間のオンライン チュートリアルを読むだけで済むとは思わないでください。

于 2010-11-10T15:05:37.750 に答える
1

翻訳者はいません。

.NET Micro Frameworkは、ボードと似ていないPhycore LPC3180 (NXP)プラットフォームに移植されているため実行できますが、 .NET フレームワークをプラットフォームに移植する必要があります。Meamoを mbed ボードに移植しない限り、Mono AOT を使用できる可能性は低いです。移植には、C コードをプログラムできる必要があります。

最善かつ最速の方法は、C++ を学習することです。C++ を使い始めて違いを理解すれば、C++ と C# の違いはそれほど大きくありません。また、C# によって提供されるものではなく、ハードウェアの制御と通信に mbed ライブラリを使用する必要があります。

C# コードは、プログラム設計をデバッグするための優れたプロトタイプでしたが、ターゲットでは役に立ちません。問題を理解したので、それほど難しいことではありません。

于 2010-11-10T11:29:17.363 に答える
0

ターゲット プラットフォームで .NET を実行できないことに気づかずに、どうやってここまでたどり着いたのかはわかりませんが、Mono の Ahead-of-Timeコンパイラがターゲット プラットフォームに出力できるかどうかを確認する価値はあります。

少なくとも、(数か月?) コードを捨てることはありません。

于 2010-11-10T09:38:57.153 に答える
0

ガベージ コレクション言語でアプリケーションを作成したため、これを mbed プラットフォームに移植する最速の方法は、アプリケーションを mbed で実行されるガベージ コレクション言語に移植することです。

私は試したことはありませんが、eLua には mbed プラットフォームで動作する準備段階のポートが用意されているはずであり、Lua を習得するのはかなり簡単です。 http://mbed.org/users/jsnyder/notebook/elua-preliminary-port/

お父さんに mbed プラットフォームで eLua を立ち上げてもらうことができれば、アプリケーションを C++ に変換するよりも、かなり簡単に変換できると思います。

于 2010-11-10T19:42:36.447 に答える