我有一箇舊的代碼在VB.Now我轉換成vb.net.There是一條線名稱「VarPtr」不是在代碼declared.In舊的VB代碼
昏暗pCParameters作爲整數
pCParameters = VarPtr(參數)
當我執行代碼
名稱 'VarPtr' 是錯誤occure不decla紅。
VarPtr不支持在vb.net.So我如何取代它。
我有一箇舊的代碼在VB.Now我轉換成vb.net.There是一條線名稱「VarPtr」不是在代碼declared.In舊的VB代碼
昏暗pCParameters作爲整數
pCParameters = VarPtr(參數)
當我執行代碼
名稱 'VarPtr' 是錯誤occure不decla紅。
VarPtr不支持在vb.net.So我如何取代它。
這不是那麼直截了當,因爲你的.NET變量是被管理的。爲了完成你所要求的工作,你需要看看GCHandle.Alloc,並固定變量,使其不能移動。然後你可以得到它的內存地址。
這樣的事情(從內存中):
GCHandle handle = GCHandle.Alloc(pCParameters , Pinned)
IntPtr ptr = handle.AddressOfPinnedObject
是的,我找到了新的answer.The 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
一種解決方案可能取決於具體情況。您可以發佈代碼以瞭解如何使用pCParameters ... –
pCParameters定義爲整數。 – vikky
你可以在這段代碼之後顯示如何使用參數嗎?我懷疑它可能會傳遞給外部DLL函數,如果是這樣,知道這對解決方案非常重要。 –