People usually use ATL for making COM DLLs, because, as you say, it's hideous

Unlike MFC, it adds very little to the size of your file and if you choose the MinDependency build option (like Release/Debug -- set up for you by the wizard) it needs no extra files.

I saw something on PlanetSourceCode...PigServer or something like that.