since IDropTarget is a type, and it is referenced in ocidl.h, 'ambiguous' implies two definitions for the same, one must not disclude that the two definitions ARE the same and this would point to the common error of an include file, including itself. An include file should never include itself! But include files are notorious for including themselves vis-à-vis other include files. While it is of poor craftsmanship, it IS promoted in K&R C manual itself when they proscribe something akin to: #IFNDEF THISFILENOTALREADYREAD #define THISFILENOTALREADYREAD .... your h file: 'thisfile' ... #ENDIF If this is not the case, kindly submit the result of this search complete solution 'IDropTarget' Also, there is a switch you can throw that will indicate the include files as they are included. That would be helpful. Daniel Kilsdonk