VB6.0调用C++dll参数传递问题
文档中的开发说明对方法的描述:
原型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呢
各位高人,求教
[解决办法]
你的不是 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 LongDim lpInBuff As LongDim hOutBuff As LongDim lpOutBuff As LongDim rd Ad LongArrayCount = 6hInBuff = GlobalAlloc(GMEM_ZEROINIT, ArrayCount*LenB(Integer)) '申请内存空间lpInBuff = GlobalLock(hInBuff)' 将VB 数组中的数据复制到输入内存CopyMemory ByVal lpInBuff,VbArray(0),(Ubound(VbArray)+1)*LenB(Integer)ArrayCount = 256hOutBuff = GlobalAlloc(GMEM_ZEROINIT, ArrayCount*LenB(Integer)) '申请内存空间lpOutBuff = GlobalLock(hOutBuff)rd = Base64Decode(lpInBuff,lpOutBuff,ArrayCount)'......GlobalUnlock hInBuffGlobalUnlock hOutBuffGlobalFree hInBuffGlobalFree hOutBuff'......
[解决办法]
没关系,原来的声明是正确的。
参数声明没有加 ByVal 的缺省就是 ByRef, 也就是传址。因此相当于指针。
你的调用时类似这样:
Ret = Base64Decode(intInBuffer(0), intOutBuffer(0), 64)