COM

在VC中用ATL做一个COM例子
有一个接口函数,声明如下
// interface IMath2
[helpstring("method Sum")] HRESULT Sum([in]short sArraySize,[in,size_is(sArraySize)]short sArray[],[out,retval]long *opr);
实现:
STDMETHODIMP CMath::Sum(short sArraySize, short sArray[], long *opr)
{
// TODO: Add your implementation code here
    *opr=0;
  while (sArraySize)
  {
  *opr=sArray[--sArraySize];
  }
return S_OK;
}
在VB中编写客户端程序
调用这个接口:
Dim iMath As New CHAPTER4_SERVERLib.Math(已经引用,无错)
Dim IMath2 As CHAPTER4_SERVERLib.IMath2Private Sub cmdSum_Click()
  Set IMath2 = iMath
  Dim sArray(3) As Integer
  sArray(0) = 3
  sArray(1) = 5
  sArray(2) = 4
  txtopr = IMath2.Sum(3, sArray()) ‘VB数组是这样传递吧!
  
End Sub
运行时提示:
编译错误:byref参数类型不符。