Ann and Jason Edmeades wrote:
However, this would seem something which is so common - ie inheritence is used all over the place. How do people handle this? I've looked through a few places in the code and cant see how this can be done. I could 'pretend' by initializing the Vtbl as I create the com object and do some LoadLibrary type dynamic addressing but I really want link time resolution not load time resolution.
One solution would be to put the common routines in a header file, and #include it, but code in headers or #including modules is uaually frowned upon! I cant see any sensible way of doing this and I'd rather not do lots of code duplication if avoidable as this common class is used in about 7 other classes!
Have a look at dlls/quartz/pin.h I have emulated C++ style inheritance by creating a structure that is included at the start of every derived implementation and then constructing the vtable at compile time and linking to the base functions. If you wanted to do the same for d3d{8,9} and wined3d you would have to add each common function to the spec file.
Rob