- Код: Выделить всё
#Compiler PBWin 10
#Compile DLL "com.dll"
#Com TLib On
#Dim All
Class CBase Guid$("{CE5E9E6B-5222-4A0B-ADB1-5264BCEF1ADF}") As Com
Instance m_x As WString
Interface IBase Guid$("{F7F5CE35-A29B-44E1-BD51-926F0213F89C}")
Inherit IDispatch
Property Get x() As WString
Property = m_x
End Property
Property Set x(ByVal x As WString)
m_x = x
End Property
End Interface
End Class
Class CInherited Guid$("{D264880A-4EEE-4DBE-A540-55A631EAB691}") As Com
Interface IInherited Guid$("{3ADD365D-736E-4A58-AB2C-A2F6605B63B0}")
Inherit CBase, IBase
Method change()
me.X = "Hello"
End Method
End Interface
End Class
И враппер в виде DLL с экспортом, тут создаю COM объект и передаю его в VB
- Код: Выделить всё
#Compile DLL
#Dim All
$CLSID_Inherited = Guid$("{D264880A-4EEE-4DBE-A540-55A631EAB691}")
Interface IInherited Guid$("{3ADD365D-736E-4A58-AB2C-A2F6605B63B0}")
Inherit IDispatch
Property Get x() As WString
Property Set x(ByVal x As WString)
Method change()
End Interface
Sub TestCom Alias "TestCom" ( obj As IInherited) Export
Dim testInit As IDispatch
Dim test As IInherited
Let testInit = NewCom ClsId $CLSID_Inherited Lib "com.dll"
Let obj = testInit
End Sub
И наконец VB код, я вызываю DLL и пытаюсь вызвать COM объект созданный в DLL.
Получаю ошибку: Ошибка 424, Object required!
- Код: Выделить всё
Option Explicit
Declare Sub TestCom Lib "wrapper.dll" (obj As Variant)
Sub main()
Dim obj As Variant
TestCom (obj) <-- Ошибка 424, Object required!
obj.Change
MsgBox obj.x
End Sub
Собственно как мне получить COM объект который был создан в wrapper.dll ?