读书人

.net结构体的传递有关问题,

发布时间: 2012-01-28 22:06:13 作者: rapoo

.net结构体的传递问题,急!!!!!
我用vc.net编写了一个dll,使用了一个结构体,其中有个量是数组,结构体采用指针传递模式,
在vb.net中调用dll的函数声明为byref传递结构体,调试发现vc收到的数据和要传送的不一致,好像变了。
哪位大虾对此比较明白,请指教


[解决办法]
结构体是值传递而不是引用传递
[解决办法]
就这么简单描述一下,鬼知道怎么回事!
[解决办法]
你用VC写的那个Dll是非托管的Dll吗?
如果是托管Dll或许不会有这种问题吧
如果是非托管Dll,结构体的内部构造可能和托管的不同,因此,好像需要控制什么变量布局之类的,以前看过一点这方面的东西
[解决办法]
写一个托管非托管混合DLL来做桥吧
[解决办法]
[StructLayout(StructLayout.Sequential)] //加上这一句试试
Public Structure CARD
Public BlockID As Byte
Public SecID As Byte
Public key() As Byte
Public CardID As Byte
End Structure
[解决办法]
[StructLayout(StructLayout.Sequential)] //加上这行
Public Structure CARD
Public BlockID As Byte
Public SecID As Byte
[MarshalAs(UnmanagedType.ByValArray,SizeConst=6)]//还要在这里加上这行!
Public key() As Byte
Public CardID As Byte
End Structure

读书人网 >VB Dotnet

热点推荐