次の方法で共有


方法: /clr コンパイルでネイティブ型を使用する

/clr コンパイルでネイティブ型を定義できます。このネイティブ型は、アセンブリ内からの任意の使用が有効です。ただし、参照されているメタデータからネイティブ型を使用することはできません。

各アセンブリに、そのアセンブリで使用するすべてのネイティブ型の定義を含める必要があります。

詳細については、「/clr (共通言語ランタイムのコンパイル)」を参照してください。

使用例

このサンプルでは、ネイティブ型を定義して使用するコンポーネントを作成します。

// use_native_type_in_clr.cpp
// compile with: /clr /LD
public struct NativeClass {
   static int Test() { return 98; }
};

public ref struct ManagedClass {
   static int i = NativeClass::Test();
   void Test() {
      System::Console::WriteLine(i);
   }
};

このサンプルでは、コンポーネントを使用するクライアントを定義します。ネイティブ型がコンパイル単位で定義されていないと、ネイティブ型へのアクセスでエラーが発生します。

// use_native_type_in_clr_2.cpp
// compile with: /clr
#using "use_native_type_in_clr.dll"
// Uncomment the following 3 lines to resolve.
// public struct NativeClass {
//    static int Test() { return 98; }
// };

int main() {
   ManagedClass x;
   x.Test();

   System::Console::WriteLine(NativeClass::Test());   // C2653
}

参照

関連項目

C++ Interop (暗黙の PInvoke) の使用