我使用COM的一个接口,调用函数返回值:
[out,retval]BSTR *str
{
*str="agcdef"
}
使用客户程序调用这个函数,结果是只返回“a".
请教各位,WHY??

解决方案 »

  1.   

    SysAllocString
    Allocates a new string and copies the passed string into it.BSTR SysAllocString( 
      const OLECHAR *  sz  
    );
    Parameter
      

  2.   

    你可以使这个*str=CComBSTR("agcdef")
      

  3.   

    我觉得你这样做是不对的,这样会造成str的头字节(储存长度的字节)没被初始化
    应该是:
    *str=SysAllocString(L"agcdef"); 
      

  4.   

    实现的时候因该写成这样
    USES_CONVERSION;
    *str=T2W("agcdef"");而在客户端的转换在名域(namespace)_com_unitl里有定义.
    _com_unitl::???(有提示的)