VC原码是 
HANDLE icdev; 
unsigned char crlen[2],recbuff[300]; 
int st; 
st=dc_pro_resethex(icdev,crlen,(char *)recbuff); 我需要的是dc_pro_resethex函数 
请问VB怎么声明这个函数? 
VC是调用一个DDL库,我VB也需要调这个DLL库
 我声明成byref string,程序运行到这个函数时就会崩溃,声明成byref byte,不能正确调用该函数,没有返回任何值
crlen是返回数据的长度,recbuff是返回的数据,ICDEV值是180,

解决方案 »

  1.   

    ByRef recbuff() As Byte
      

  2.   

    首先函数必须是 stdcall 的
    declare function dc_pro_resethex lib "..." (byval icdev as long, byref crlen as integer, byref recbuff as byte) as longdim crlen as integer
    dim recbuff(0 to 299) as byte
    dim st as long 
    st = dc_pro_resethex(180&, crlen, recbuf(0))
      

  3.   


    两个unsigned char 的数组:unsigned char crlen[2],recbuff[300]; 一个声明为integer, 一个声明为byte。字节倒是对上了。不过在VB里给这两个参数赋值有点费脑筋,因为从VC代码的声明看,貌似DLL里是把它们当字符理解的。假设
    strCrlen="ok" 'just for an example
    strRecBuff="adsf;adkjfa;dk" 
    调用的时候如何传过去?