Имя 'VarPtr' не объявлено. В старом коде vb - PullRequest
2 голосов
/ 05 ноября 2011

У меня есть старый код в VB. Теперь я конвертирую его в vb.net. В коде есть строка

Dim pCParameters As Integer

pCParameters = VarPtr (Параметры)

Когда я выполняю код, возникает ошибка, что

Имя 'VarPtr' не объявлено.

VarPtr не поддерживается в vb.net.Так как я его заменяю.

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Это не так просто, потому что ваши переменные в .NET управляются.Чтобы сделать именно то, что вы просите, вам нужно посмотреть на GCHandle.Alloc и закрепить переменную, чтобы ее нельзя было переместить.Тогда вы можете получить его адрес памяти.
Примерно так (из памяти):

GCHandle handle = GCHandle.Alloc(pCParameters , Pinned )
IntPtr ptr = handle.AddressOfPinnedObject
0 голосов
/ 07 ноября 2011

Да, я нашел ответ. Новая функция 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
...