在本机C ++类中使用托管对象

时间:2014-09-23 11:25:14

标签: c++-cli

我想从本机C ++代码中调用C ++ / CLI类的成员。编译器禁止我这样做。我知道我们可以在托管代码中使用本机指针/引用,但不知道相反的方式。通过举一个简单的例子,任何人都可以帮助我。谢谢。

1 个答案:

答案 0 :(得分:2)

无法完成。托管类型的内存布局由JIT决定,因此除非您的本机代码使用CLR编程接口,否则它无法发现和访问它们。保持垃圾收集器可见的引用是另一个问题,尽管克服这一点更为直接。

但是,可以使用C ++ / CLI创建本机类型,并且这些类型将在编译时固定内存布局,因此托管代码和本机代码都可以使用它们。这是反向跨越托管原生边界的方法。 (从委托创建的函数指针是反向交叉的另一种方式)