照着做就要做全么,在out后加上retval就可以了。

解决方案 »

  1.   

    感谢 walterzh(想你) 的回答,
    不过, 我的[in,retval]----没有问题的;但是, 它只能用一次。
    我现在的问题就是[out], 用它来返回数据,但是始终不成使用[out]有什么要注意的?
      

  2.   

    out后面不带retval是可以的。retval只是让函数在VB,或vc环境中import后将最后一个输出参数当成返回值。retval只能和out连用,而且只能是该方法的最后一个参数。你的代码是正确的,可能是客户端的问题.客户端调用声要分配int指针的内存int n;IxxxPtr pxxx = NULL;pxxx.CreateInstance(...);pxxx->ccc(&n);
      

  3.   

    我的client用vb写的:Private Sub Command2_Click()
    Dim tmp As Long
    Dim oSe As New DDDDLib.qqq
    tmp = 1100
    oSe.www (tmp)
    Set oSe = Nothing
    End Sub
      

  4.   

    跟踪的结果:
    tmp的值根本没有改变
      

  5.   

    呵呵, 自己解决了。还是试验的方法.但是, 开始时的实验走入了死胡同。没有考虑[out]使用的场合:[out,retval]优先于[out]
    如果没有[out,retval],用[out]无论如何也没有值输出到client个人小结:
    明确使用场合
    试验(考虑应用合理性)
    对比分析
    应用
      

  6.   

    当你把方法声明为HRESULT时,只是返回一些信息
    retval就是指明该参数映射为操作的结果,所以用[out]无论如何也没有值输出到client
    而把方法声名为void时,应该可以用[out]
      

  7.   

    用VB你该用long
    用[out]没问题
      

  8.   

    walterzh(想你) ( 
    VB下没有int 只有long
    我记得是