我是按照这里(http://www.vckbase.com/document/viewdoc/?id=1498)
的办法创建一个atl的程序,再创建了一个简单的 atl对象后,在为该对象添加方法,
为什么不能给 设置 参数的属性 out retval 
       
    帮我看下,我是按照上面一步一来的,不知道是我哪里错了,还是他的有问题。

解决方案 »

  1.   

    out   retval   必须是最后一个参数
      

  2.   


    [
    object,
    uuid(DCA4F88E-4952-11D1-883A-444553540000),
    dual,
    helpstring("IMath Interface"),
    pointer_default(unique)
    ]
    interface IMath : IDispatch
    {
    [id(1), helpstring("method Add")] HRESULT Add([in] VARIANT varOp1,[in] VARIANT varOp2, [out,retval] VARIANT* pvarResult);
    [id(2), helpstring("method Subtract")] HRESULT Subtract([in] VARIANT varOp1, [in] VARIANT varOp2, [out, retval] VARIANT* pvarResult);
    [id(3), helpstring("method Multiply")] HRESULT Multiply([in] VARIANT varOp1, [in] VARIANT varOp2, [out, retval] VARIANT* pvarResult);
    [id(4), helpstring("method Divide")] HRESULT Divide([in] VARIANT varOp1, [in] VARIANT varOp2, [out, retval] VARIANT* pvarResult);
    };这些属性会定义在*.idl文件里
      

  3.   

    yxz_lp 那样是手动改的吧,难道不可以这样添加吗?
      

  4.   

    out参数必须作为返回值。
    [propget, id(4), helpstring("method Divide")] HRESULT Divide([in] VARIANT varOp1, [in] VARIANT varOp2, [out, retval] VARIANT* pvarResult);