1

私が現在遭遇している問題は本当に奇妙です。C# プロジェクトから Managed C++ クラスを使用しようとしましたが、コンパイラが型を見つけられません。

このスクリーンショットを見てください。 問題のスクリーンショット

Managed C++ プロジェクト (NGervill.Gervill.Native) が参照され、オブジェクト ブラウザーによると、必要な名前空間と型がすべて含まれています。ソース コードに using を追加してクラスを使用しましたが、それでもコンパイル エラーが発生します。

ここで最も奇妙な点は、Managed C++ プロジェクト内の他の型を参照できることです。別の C# クラスでは、PortMixerProviderNative クラスのメソッドにアクセスします。これは、ターゲット プラットフォームと .net フレームワークのバージョンが正しいことを意味します (.net 4.5 - x86 ビルド)。

Visual Studio は古いバージョンのマネージ C++ DLL を何らかの形でキャッシュしていますか、それとも他に何がそのような問題を引き起こす可能性がありますか?

4

2 に答える 2

1

PortMixerNative はネイティブ C++ クラスであり、マネージ クラスではありません。ネイティブ クラスは、通常はマネージド クラス ラッパーのプライベート フィールドの型であるため、場合によってはアセンブリ メタデータで公開できますが、C# プログラムからはまったく使用できません。public ref classC++/CLI プロジェクトの宣言のみが使用可能です。

どのラッパー クラスを使用する必要があるかは明確ではありません。PortMixerNative ではありません。さらにヘルプが必要な場合は、ベンダーのマニュアルやコード サンプルを確認するか、ベンダーに問い合わせてください。

于 2013-11-03T18:37:36.120 に答える