在IDL语言里在你的方法的参数加入你想要返回的参数,在这个参数前面加上[out,retval],这个参数必须是指针类型的!

解决方案 »

  1.   

    不能用方法的返回值吗(return s_ok or return s_false 等等吗?)?
      

  2.   

    不能用你说的方法,用yyz_xyz(众众) 说的那种方法来定义返回值,这样函数才能接收到你用return返回的值
    return s_ok等只是com内部返回的,在client端是接收不到此返回值的
      

  3.   

    几乎所有的COM方法都会返回一个HRESULT类型的错误号.
    为了让方法返回一个与"方法的物理"HRESULT"不相关的逻辑结果,COM IDL支持retval参数属性.
    retval参数属性含义是,相关联的物理方法参数实际上是操作系统的逻辑结果,在支持retval的环境中,该参数应该被映射为操作系统的结果.例如,给定下面的IDL方法定义:HRESULT Method2([in] shout arg1,[out,retval] short *parg2);在JAVA中,应该映射为下面的函数:
    public short Method2(short arg1);而在BASIC中,方法定义如下:
    Function Method2(arg1 as Interger) As Integer因为C++没有专门的运行库支持COM接口的访问操作,所以Microsoft C++将这个方法映射为下面的函数:
    virtual HRESULT _stdcall Method2(short arg1,short *parg2)=0;所以如果你用VC,你应该习惯将一般函数的返回值在COM方法中做为一个指针参数看待!