1

マネージド .NET アプリから C++ コードにアクセスしようとしています。そのためには、必要なアンマネージ C++ クラスの.NET ラッパーを C++/CLI で作成する必要があります。

C++/CLI が単純な古い CIL にコンパイルされる場合、C# はポインターもサポートするため、 unsafe クラスを使用して C# で同じラッパー クラスを記述できないのはなぜでしょうか?

C++/CLI コンパイラは C# コンパイラとは異なり、ネイティブ C++ コードを参照できますが、C# は参照できないためですか?

私は C++ よりも C# の構文に精通しているので、できればそうしたいと思っています。

4

1 に答える 1

2

あなたは(試す)ことができ、十分な努力を払えば、おそらく物事を機能させることができます。unsafeコードに頼らなくても。しかし、相互運用状況のC ++ / CLI構文は、C#と十分に似ていると思います。

ただし、このアプローチの最大の問題は、相互運用レイヤーの長期的なメンテナンスです。C ++側で何かが変更されるたびに、C#に手動で変更を加える必要があります。そして、そのようなことを警告するC#コンパイラからはあまり助けが得られません。実行時に、マングルされたC++名がDLL内に見つからない場合にのみわかります。

また、特に32ビットと64ビットの両方で同じコードを使用する必要がある場合は、C#でC++.Hファイルを再実装するとエラーが発生しやすくなります。

于 2013-03-21T15:24:04.727 に答える