关于调用dll的声明写法
不知道dll是什么写的,但是有一个C#调用的声明函数,代码如下:
public static extern void Decrypt([MarshalAs(UnmanagedType.LPArray)] byte[] A_0, int A_1, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] A_2, int A_3);
看原理是传入字节组和它的长度,那么dll进行解密计算并输出结果到A_2,
A_3也是指定了解密之后数组的长度.
长度都是整形,也就是Integer,而传入的字节组到底是用指针还是数值,关键是传出变量怎么声明.
我基本上是菜鸟,最好讲解详细些,或者多几种写法,我一一测试.
[解决办法]
public static extern void Decrypt([MarshalAs(UnmanagedType.LPArray)] byte[] A_0, int A_1, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] A_2, int A_3);
==>
public declare sub Decrypt LIN "XXX.DLL" (A_0() as Byte,A_1() as Long,A_2() as byte,byval A_3 as long)
[解决办法]
public static extern void Decrypt([MarshalAs(UnmanagedType.LPArray)] byte[] A_0, int A_1, [Out, MarshalAs(UnmanagedType.LPArray)] byte[] A_2, int A_3);
==>
Private Declare Sub Decrypt Lib "XXX.DLL" ( _
ByRef A_0() As Byte, _
ByVal A_1 As Long, _
ByRef A_2() As Byte, _
ByVal A_3 As Long)