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


Практическое руководство. Использование собственного типа в компиляции /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)