首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

请问:vb.net调用vc写的dll出错:报尝试读取或写入受保护的内存

2012-01-06 
请教:vb.net调用vc写的dll出错:报尝试读取或写入受保护的内存vb,net调用dll中的unsigned chargetbitchar(I

请教:vb.net调用vc写的dll出错:报尝试读取或写入受保护的内存
vb,net调用dll中的unsigned char getbitchar(IN struct st cl,OUT unsigned char b[]),报尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
这个函数在vb.net下应该怎么写?

[解决办法]
1.首先你要定义好结构体

VB.NET code
    <StructLayout(LayoutKind.Sequential, Pack:=1)> _    Public Structure st        'INT型        Dim countAs Int32        'Char[]数组类型        <MarshalAs(UnmanagedType.ByValArray, ArraySubType:=UnmanagedType.ByValTStr, Sizeconst:=80)> _        Dim string() As Byte    End Structure
[解决办法]
Public Structure cardlayout 
Dim a As Int16 ===>int32
Dim b As Int16 ===>int32
Dim c As Int16 ===>int32
Dim d As Int16 ===>int32
Dim e As Int16 ===>int32
Dim f As Int16 ===>int32
Dim g As Int16 ===>int32
Dim h As Int16 ===>int32
Dim i As Int16 ===>int32
Dim j As Int16 ===>int32
Dim k As Int16 ===>int32
Dim l As Int16 ===>int32
Dim m As Int16 ===>int32
Dim n As Integer 
End Structure 


<DllImport("your.dll", CharSet:=CharSet.Ansi) > Public Shared Function SetStaticStruct(Byval str() As Byte, ByRef cl As cardlayout)

End Function 
<DllImport("your.dll", CharSet:=CharSet.Ansi) > Public Shared Function getbitchar(ByRef cl As cardlayout, ByValstr() As Byte)
End Function 

热点排行