我在VB中有一个旧代码。现在我将它转换为vb.net。代码中有一行代码
昏暗的pCParameters As Integer
pCParameters = VarPtr(参数)
当我执行代码时出现错误
名称'VarPtr'未声明。
vb.net不支持VarPtr.So我如何替换它。
这不是那么简单,因为.NET中的变量是受管理的。要完全按照您的要求进行操作,您需要查看GCHandle.Alloc并固定变量以使其无法移动。然后你可以得到它的内存地址。 这样的事情(来自记忆):
GCHandle handle = GCHandle.Alloc(pCParameters , Pinned )
IntPtr ptr = handle.AddressOfPinnedObject
是的我找到了答案。新的VarPtr功能是
Public Function VarPtr(ByVal e As Object) As Integer
Dim GC As GCHandle = GCHandle.Alloc(e, GCHandleType.Pinned)
Dim GC2 As Integer = GC.AddrOfPinnedObject.ToInt32
GC.Free()
Return GC2