描述:
com idispatch接口下定义并实现一带[out]传出的函数,感觉跟带in没什么区别呀.
如 定义:HRESULT Test([in]unsigned short * str1,[out]unsigned short *str2);
实现如:
str2=str3;//设str3 为指向一个返回到调用函数后仍不释放内存的指针
调用时如:unsigned short *instr1=(unsigned short *)"",*instr2;
XXX->Test(instr1,instr2);
但返回到调用函数后的instr2仍指向一个空处,并没有把str2传出给instr2;
这样的话所谓传入传出有什么用?
还有那[out,retval],如在str2向使用这个的话:
调用改为:instr2=xxx->Test(instr1);
它又会报Test函数不只一个参数,非得让你使用两个参数.这样的话所谓的返回不知道有所意义,
初学者 忘大家指教
解决方案1:
如果用VS.NET开发选择Project右击选择propertis
在Linker选项的command line中加上comsupp.lib
str2=str3 咔咔,你这是什么意思
要传出结果需要是 *str2 = xxxxx; 咔咔
楼上的,这是在idl中, in , out 的属性会影响到 proxy/stub 咔咔
我去kb去啦
[out,retval],如在str2向使用这个的话:
调用改为:instr2=xxx->Test(instr1)
不可能出错
给你看看我的代码:
Private Sub CGEChart1_BSelected(ByVal LCount As Long, ByVal NCount As Long)
Dim str1 As String
If LCount > 0 Then
Dim i As Long
For i = 0 To LCount - 1 Step 1
str1 = str1 + CGEChart1.GetCurrentBSelectedL(i)
Next
End If
End Sub