방법: /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)