如何在托管类中使用非托管类?

时间:2015-07-29 06:13:39

标签: c++ .net winforms opencv visual-c++

我试图将cv::CascadeClassifier对象放在System.Windows.Forms.Form类中。

Intellisense和编译器说,我在托管类中没有非托管类。

那么,我如何在Windows窗体应用程序中使用该非托管类?

2 个答案:

答案 0 :(得分:1)

好吧,你的编译器是正确的。但是,您可以将指针作为成员的非托管类型。它不是最佳的,但它是你所拥有的。如果需要,您可以使用构造函数和析构函数进行分配和清理。

答案 1 :(得分:1)

here是来自MSDN的一些示例代码。它同意Ed S.的回答

  

U中的this指针是__nogc指针,因此如果没有先固定M,就无法调用f。

示例(来自同一页面)

// mcpp_nested_classes5.cpp
// compile with: /clr /LD
#using <mscorlib.dll>

__gc struct M {
   __nogc struct U {   // nested unmanaged class
      int m_data;
      U() { System::Console::WriteLine("U::U"); }
      void f() { int* p = &m_data; }
   };

   int ia __nogc[100]; // embedded unmanaged array
};

M::U u; // use unmanaged nested type