core.sys.windows.com.ComObject apparently has wrongly laid out Vtable
Kagamin
spam at here.lot
Tue Mar 19 09:22:09 UTC 2024
You incorrectly declared the interface variable. Try this:
```
auto COMobject = new com.ComObject();
//auto COMobject = new ComObject();
IUnknown ip = COMobject;
writeln(COMobject.count);
writeln(" ip vtable: ", ip.lpVtbl);
auto vtable = COMobject.__vptr;
writeln("COMobject vtable: ", vtable);
writeln("ip &AddRef: ", &ip.lpVtbl.AddRef);
writeln("ip offset: ", cast(void*)&ip.lpVtbl.AddRef -
cast(void*)ip.lpVtbl);
auto ipaddref = cast(void*)ip.lpVtbl.AddRef;
writeln(" ip AddRef: ", ipaddref);
auto addref = cast(void*)(&COMobject.AddRef).funcptr;
writeln("COMobject AddRef: ", addref);
writeln("COMobject AddRef : ip AddRef offset: ", addref -
ipaddref);
COMobject.AddRef();
writeln(COMobject.count);
ip.lpVtbl.AddRef(ip);
writeln(COMobject.count);
```
More information about the Digitalmars-d
mailing list