【发布时间】:2011-11-14 19:25:26
【问题描述】:
我有一个暴露了一些接口的非托管库。用户可以实现接口并使用他们的自定义实现将它们粘贴到库中。
我想为这个库提供一个托管包装器。 用托管接口包装非托管接口很容易。但在我的情况下,我想支持各种接口的用户实现,这意味着我需要采用一个接口的托管实现并使用它的非托管对应物将其包装,然后再将其发送到库的非托管部分的深处。
我尝试了类似的方法:
class UnmanagedWrapper {
DoSomething() {m_clr.DoSomething();}
IManaged^ m_clr;
}
但是编译器正确地声称,我不能在非托管类中拥有托管成员。
我可以在这里做一些优雅的事情吗?
【问题讨论】:
-
上下文不足。使用 gcroot 或 Marshal::GetFunctionPointerForDelegate()。
标签: c++ clr managed-c++