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

关于调用dll的宣言写法

2012-12-31 
关于调用dll的声明写法不知道dll是什么写的,但是有一个C#调用的声明函数,代码如下:public static extern v

关于调用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)

第一个参数与第三个参数都应该是指向BYTE()数组的指针.

热点排行