我有一个vb6.0 (基本)项目,我想迁移到新的vs2022。大多数代码只是翻译“或多或少”好,但也有一些亮点。我试过上网,但找不到解决办法。所以我的问题是:
我有以下代码:
Public Structure Test
Dim a as long
Dim b as long
....
End structure
Public Sub xyz()
'here im filling Test structure locally
a = test...
..
A(a)
End sub我要调用的外部dll函数是A([In] IntPtr Data)。
所以用我的测试结构调用A是失败的,在vb6.0中,它运行得很好。我不知道有什么问题。我试过一些东西,但我不知道
我希望它可以像在vb6.0中那样编译。我还没有触及这个代码的任何部分。
另一件事是VarPtr()函数不再可用。vs2022的替代品是什么?
发布于 2022-11-07 00:29:34
当我需要将结构作为指针Intptr传递给非托管API时,我将执行以下操作:
Dim buffer As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(GetType(T)))的结构指针。
当非托管方法返回时,使用:Marshal.PtrToStructure(Of T)(buffer)将指针转换为结构。
Marshal.FreeHGlobal(buffer)
https://stackoverflow.com/questions/74319732
复制相似问题