1

私はc++/cliに変換しているc++ dllを持っています。/clr コンパイラ オプションを設定すると、プロジェクトが正常にビルドされます。しかし、ac# プロジェクトから dll を参照してネイティブ メソッドを参照しようとすると、c# プロジェクトはそれを見つけることができません。/clr を設定すると、他の .net アセンブリから見えるはずのすべてのソース コードが MSIL にビルドされませんか? c++/cli ラッパー クラスを作成して、ネイティブ コードを c# コードで認識できるようにする必要があるのはなぜですか?

c++/cli が実際にどのように機能するかは不明です....

4

1 に答える 1

5

/clr、ネイティブ クラスをマネージ コードから認識できるようにするわけではなく、すべてをマネージ コードとしてコンパイルするわけでもありません。C++ プロジェクトにマネージ コードを追加できるようにするだけです。これは、C++/CLI 言語拡張を介して行われます (つまりref class、標準の代わりに a を作成しますclass)。

この/clr:pureフラグ、すべてをマネージ コード (ネイティブではない) としてコンパイルしますが、コンパイルできるようにするには、ソース コードを大幅に変更する必要があります。

于 2012-05-25T00:49:29.167 に答える