文档中的开发说明对方法的描述:
原型 long Base64Decode(short * in, short * out, short len)
功能简介 用于将数据进行Base64 解码码
参数说明 In :输入数据(文本)
Out:输出数据(二进制)
Len:输入数据长度.VB引用ocx后的方法是这样的
Function Base64Decode(in As Integer, out As Integer, len As Integer) As Long
但是这里的in和out是指针吧,VB这里应该怎么处理,in是传入参数,out是传出参数吧,那我怎么给传in和out呢
各位高人,求教

解决方案 »

  1.   

    你的不是 C++ DLL 吗?应该是 API 形式的 DLL 吧?怎么又和引用 ocx 有关,难道你的C++是ActiveX 工程?Function Base64Decode(in As long, out As long, len As Integer) As Long
    '......
    Dim ArrayCount As Long     ' 数组数量
    Dim hInBuff As Long
    Dim lpInBuff As Long
    Dim hOutBuff As Long
    Dim lpOutBuff As Long
    Dim rd Ad LongArrayCount = 6
    hInBuff = GlobalAlloc(GMEM_ZEROINIT, ArrayCount*LenB(Integer))  '申请内存空间
    lpInBuff = GlobalLock(hInBuff)
    ' 将VB 数组中的数据复制到输入内存
    CopyMemory ByVal lpInBuff,VbArray(0),(Ubound(VbArray)+1)*LenB(Integer)ArrayCount = 256
    hOutBuff = GlobalAlloc(GMEM_ZEROINIT, ArrayCount*LenB(Integer))  '申请内存空间
    lpOutBuff = GlobalLock(hOutBuff)
    rd = Base64Decode(lpInBuff,lpOutBuff,ArrayCount)
    '......
    GlobalUnlock hInBuff
    GlobalUnlock hOutBuff
    GlobalFree hInBuff
    GlobalFree hOutBuff
    '......如果不是你所说的什么ocx,而是 API 接口的 DLL,可以在 API 声明入手直接用数组来处理Declare Sub Base64Decode Lib "xx.dll" (inBuff As Any, OutBuff As Any, ByVal Length As Integer) As Long
    '......
    Dim InBuff(6) As Integer
    Dim OutBuff(255) As Integer
    Dim rd Ad Long
    Base64Decode InBuff(0),OutBuff(0),255
    '......
      

  2.   

    SupermanKing 你好 
    昨天我没有说明白,不好意思 
    其实是一个activex控件 引用后,使用控件名.出来的函数是
    Function Base64Decode(in As Integer, out As Integer, len As Integer) As Long
    这个貌似没有办法修改吧
      

  3.   

    既然是 ActiveX,为什么不用 COM 的理念写接口,而用 C 的理念写?
    这个 ActiveX 不会是你自己写的吧?那还不如用 API 写接口呢。
    如果用 COM 理念,接口应该是 VARIANT 类型,这样就可以直接在接口里处理数组了,哪还用这种指针操作。
    如果不是你写的,没法改接口,你只能用我说的第一种方法了,用 Long 类型传递内存地址进去。
    注意:调用时最好这样
    rd = Base64Decode(ByVal lpInBuff,ByVal lpOutBuff,ByVal ArrayCount)
    这样表示这个值就是地址,因为VB默认的是 ByRef,所以需要注明传递的是值。
      

  4.   


    没关系,原来的声明是正确的。参数声明没有加 ByVal 的缺省就是 ByRef, 也就是传址。因此相当于指针。你的调用时类似这样:Ret = Base64Decode(intInBuffer(0), intOutBuffer(0), 64)
      

  5.   

    其实你的这个函数应该是邮件数据里用的 MIME 编码解码的函数,这种东西其实在VB里很容易自己做的呀,即使为了提高效率选择用C做起来也是很容易的,你其实可以自己写的,搜索一下“MIME 编码”或“Base64 编码”应该有很多资料的,写这个东西的编码解码函数我初学的时候也就花了两天,那时候也是自学VB没多久,可以搞定的。