在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参数类型不符。
有一个接口函数,声明如下
// 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参数类型不符。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货