读书人

请问:vb.net调用vc写的dll出错:报尝试

发布时间: 2012-01-06 22:55:18 作者: rapoo

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

读书人网 >VB Dotnet

热点推荐