vc dll 保护

场景:

请教: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