3

当社は、製品ライン全体を C++ コードベースから .NET Framework に移行しています。非常に大きなコードベースがあり、この移行は何年にもわたって段階的に行われています。

Silverlight などの純粋なマネージ コードの利点を享受したいと考えていますが、.NET への移植には時間がかかるレガシー C++/x86 モジュールが多数あります。

1 つの解決策は、これらのモジュールを .NET Framework の小さなメモリ サンドボックスで実行される軽量の x86 エミュレーターにロードすることです。これにより、純粋なマネージド アプリケーションを維持しながら、従来の x86 DLL コードを呼び出すことができます。

そのようなプロジェクトを知っている人はいますか?

心から、

ダン

4

2 に答える 2

2

これを許可するプロジェクトを知りません。

そうは言っても、これはいずれにしても現実的な期待ではないと思います。ネイティブ コードを使用することは、x86 命令を実行できることだけではありません。

より大きな問題は、ライブラリ コードの利用に関するものです。エミュレーターはおそらく x86 命令を実装するだけでなく、Windows API などをシミュレートする必要があるため、エミュレーターに移植することはできません。

ネイティブ コードが純粋な数値コードである場合、移植はエミュレーターでテストするよりもおそらく簡単です。ライブラリを使った複雑なコードだと、エミュレータがあったとしても実際には動かないと思います。

本当に純粋に管理するために必要な機能に焦点を当て、それを移行しようとします. C++/CLI を使用すると、これが簡単になります (ネイティブ コードが C++ である場合)。これは、/clr:pure有効にして一度に 1 つのファイルをコンパイルし、必要に応じてエラーを修正するだけでよいためです。

100% マネージドを必要としないものについては、C++/CLI の相互運用性は、コード ベースを移植できるようになるまでの適切な足がかりです。

于 2009-09-11T14:50:08.883 に答える
1

.net の代わりに Java に変更します。次に、これを使用できます:

http://jpc.sourceforge.net

既存のコードを実行する

または、LLJVM などを使用して C++ から Java B コードにコンパイルします。

于 2010-09-16T09:33:03.563 に答える