如何将托管对象发送给本机函数以使用它? 通用标签

有帮助吗?

解决方案 2

在谷歌搜索之后,阅读了MSDN并尝试了一些代码,我发现这种方法可以将托管对象传递给非托管函数。

这些方法展示了如何将Object ^转换为void *以及如何将void *转换为Object ^。 通用标签

注意:如果“ unmanaged_function”具有可变参数,则此方法将无效。

其他提示

更干净,更好的方法是使用gcroot 模板。

来自MSDN的报价如何:声明句柄本机类型中

使用值类System :: Runtime :: InteropServices :: GCHandle的功能实现gcroot模板,该类为垃圾收集堆提供“句柄”。请注意,句柄本身不会被垃圾收集,并且在gcroot类中的析构函数不再使用该句柄时会释放该句柄(无法手动调用此析构函数)。如果在本机堆上实例化gcroot对象,则必须在该资源上调用delete。

您的适合使用gcroot的示例代码(该代码使用VS 2010编译并运行): 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top