Поделиться через


Практическое руководство. Использование собственного типа в компиляции /clr

Вы можете определить собственный тип в компиляции /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++ (неявный PInvoke)