描述:
int GetString(int& a)
{
int b = 1+a;
a = 3;
return b;
}
要实现如此功能,即传入a, a值改变,还要返回一值。
偶刚用COM,不懂。谢谢。
解决方案1:
应该这样
HRESULT GetString([in]long * a, [out,retval]VARIANT *pVarRet)
{
long b = 1+*a;
*a = 3;
pVarRet->intVal = *a;
}
具体看你定义是怎么样的定义
而你调用的时候又是怎么样调用
在IDL中的传入参数不是有IN和OUT属性吗?
比如: HRESULT ShowWnd([in] LONG x, [in] LONG y, [out] LONG cx, [out] LONG cy);
x,y就是你的传入参数,cx,cy就是你的传出参数了
你自己的方法,和你本身的问题不相符。
回答的IDL方法都不全对。
可是,你没有搞定啊!!!
应该是:
IDL文件中:
[id(1), helpstring("method GetString")] HRESULT GetString([in,out] int* x);
cpp文件中:
STDMETHODIMP CSave01::GetString(int *x)
{
// TODO: Add your implementation code here
return S_OK;
}