如何将托管对象发送给本机函数以使用它?
-
28-10-2019 - |
题
如何将托管对象发送给本机函数以使用它? 通用标签
解决方案 2
在谷歌搜索之后,阅读了MSDN并尝试了一些代码,我发现这种方法可以将托管对象传递给非托管函数。
这些方法展示了如何将Object ^转换为void *以及如何将void *转换为Object ^。 通用标签
注意:如果“ unmanaged_function”具有可变参数,则此方法将无效。
其他提示
更干净,更好的方法是使用gcroot 模板。
来自MSDN的报价如何:声明句柄本机类型中:
使用值类System :: Runtime :: InteropServices :: GCHandle的功能实现gcroot模板,该类为垃圾收集堆提供“句柄”。请注意,句柄本身不会被垃圾收集,并且在gcroot类中的析构函数不再使用该句柄时会释放该句柄(无法手动调用此析构函数)。如果在本机堆上实例化gcroot对象,则必须在该资源上调用delete。
您的适合使用
gcroot
的示例代码(该代码使用VS 2010编译并运行): 通用标签
不隶属于 StackOverflow