HRESULT GetUserName([in] int index, [out,retval] BSTR userName)
但是编译器确报错
error MIDL2121 : [out] only parameter must not derive from a top-level [unique] or [ptr] pointer/array : [ Type 'wireBSTR' ( Parameter 'userName' ) ]
这是什么意思?应该如何更改?
retval表示什么?
谢谢!!!
5 个解决方案
#1
retval idl属性指定一个out参数为返回值。例如对于VB的代码:
HRESULT Sum([in] short x,[in]short y,[out,retval]long *pSum);
在VB中将最后一个参数映射为返回值:
dim sum as long
sum = Sum(10,20)
另外改为就可以了
HRESULT GetUserName([in] int index, [out,retval] BSTR *userName);
out属性不能加在数组前,而必须加在数组的指针前。
HRESULT Sum([in] short x,[in]short y,[out,retval]long *pSum);
在VB中将最后一个参数映射为返回值:
dim sum as long
sum = Sum(10,20)
另外改为就可以了
HRESULT GetUserName([in] int index, [out,retval] BSTR *userName);
out属性不能加在数组前,而必须加在数组的指针前。
#2
同意楼上意见
#3
在组件中有一_bstr_t型的变量m_userName,我本想以下面的方式将结果返回
userName = m_userName,将userName定义成BSTR指针,如何将结果返回?
请原谅,我第一次做组件。
谢谢!!!
userName = m_userName,将userName定义成BSTR指针,如何将结果返回?
请原谅,我第一次做组件。
谢谢!!!
#4
使用SysAllocString分配一个BSTR,将m_userName作为参数,返回username
*userName = SysAllocString(m_userName);
外部在使用完userName后释放
SysFreeString(userName);
*userName = SysAllocString(m_userName);
外部在使用完userName后释放
SysFreeString(userName);
#5
公司下午不能上网,没有看到你回贴,请原谅
#1
retval idl属性指定一个out参数为返回值。例如对于VB的代码:
HRESULT Sum([in] short x,[in]short y,[out,retval]long *pSum);
在VB中将最后一个参数映射为返回值:
dim sum as long
sum = Sum(10,20)
另外改为就可以了
HRESULT GetUserName([in] int index, [out,retval] BSTR *userName);
out属性不能加在数组前,而必须加在数组的指针前。
HRESULT Sum([in] short x,[in]short y,[out,retval]long *pSum);
在VB中将最后一个参数映射为返回值:
dim sum as long
sum = Sum(10,20)
另外改为就可以了
HRESULT GetUserName([in] int index, [out,retval] BSTR *userName);
out属性不能加在数组前,而必须加在数组的指针前。
#2
同意楼上意见
#3
在组件中有一_bstr_t型的变量m_userName,我本想以下面的方式将结果返回
userName = m_userName,将userName定义成BSTR指针,如何将结果返回?
请原谅,我第一次做组件。
谢谢!!!
userName = m_userName,将userName定义成BSTR指针,如何将结果返回?
请原谅,我第一次做组件。
谢谢!!!
#4
使用SysAllocString分配一个BSTR,将m_userName作为参数,返回username
*userName = SysAllocString(m_userName);
外部在使用完userName后释放
SysFreeString(userName);
*userName = SysAllocString(m_userName);
外部在使用完userName后释放
SysFreeString(userName);
#5
公司下午不能上网,没有看到你回贴,请原谅