Try it:
memcpy((void *)pbuf->bstrVal,(void *)buf,bytes);
    

解决方案 »

  1.   

    不知道你查过VARIANT类型的定义没有.其定义如下:
    struct tagVARIANT
    {
    VARTYPE vt;
    union
    {
    ....
    }
    };
    typedef tagVARIANT VARIANT;
    它开始是一个VARTYPE vt;然后才是一个union;你的代码直接从Variant的地址而不是从
    union的地址开始拷贝数据,当然有问题。
    另外对于一个空字符串,你没有分配内存就直接拷贝数据,很危险。也没有设置字符串长度。应该查一下BSTR的格式。GetBuf函数处理的是与类型像关的数据,但又不知道数据的类型(没有类型参数),似乎不妥。还请高手指教。
      

  2.   

    coppermine兄弟:
    因为getbuf()中我并不知道是什么类型的数据只知道是字节流
    所以没办法是确定pbuf->bstrVal还是pbuf->pbVal
    现在的问题是在VB中提示类型不匹配
    非常感谢你的帮助
      

  3.   

    SOCKET里面传输的永远是无符号字符类型