关于COM中自定义类型
我使用VC来开发COM组件,自定义了结构,但在VB中调用就要出错
由于VC中没有自定义结构的向导,我只好手工的写IDL
[
uuid(66D373D9-5E0A-43A3-860C-67B800806CC6),
//我不知道VC中怎样产生这个uuid,我是从C++Builder中产生后拷过来的
version(1.0),
helpstring("my record")
]
typedef struct Obj
{
int a;
BSTR b;
}AObj;
[
object,
uuid(0640B77A-DCAF-4769-9B0A-FA890F99F6D6),
dual,
helpstring("IJList Interface"),
pointer_default(unique)
]
interface IJList : IDispatch
{
[propget, id(5), helpstring("property m_AObj")] HRESULT m_AObj([out, retval] AObj *pVal);
[propput, id(5), helpstring("property m_AObj")] HRESULT m_AObj([in] AObj newVal);
};
//m_AObj是IJList的属性
VB中调用
Private Sub Command1_Click()
Dim Ob As AObj
Ob.a = 5
Ob.b = "test"
Dim temp As New JList
temp.m_AObj = Ob //此处出现错误
Dim Ou As AObj
Ou = temp.m_AObj
Label2.Caption = Ou.b
End Sub
编译时报出User-defined type may not be passed ByVal