C++ interface vs D and com
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jul 12 19:34:14 PDT 2016
On Tuesday, 12 July 2016 at 23:55:55 UTC, Adam Sansier wrote:
>
> Ok, Another hack:
>
> iInterface x;
> void** y = cast(void**)&x;
> *y = malloc(iInterface.sizeof);
>
> x.__vptr = cast(immutable(void*)*)(*ptr);
> x.func();
>
> works.
>
> x is the object of type iInterface. It has no object associated
> with it, basically create one using malloc and set it's vtable.
>
> this avoids the need to create the class.
What happens when you declare an interface that extends from
IUnknown (and not extern(C++)), then cast the pointer returned
from the COM API? It should just work without needing to muck
around with the vtable.
More information about the Digitalmars-d-learn
mailing list