Ok, that sucked.  I finally went into the URIReference class to check the function that was being virtually overridden (_acceptObject).  Turns out that somebody in SPUseReference added an extra const to the parameter that's not in the base class's function signature (or somebody removed the const in the base class... either way...).  I took the const away in SPTRefReference's version, and voila! Linkage!

Your challenge of the day:
Why can the function signature be different for SPUseReference and everything works hunkey dorey, but when I make a new class, SPTRefReference, and have one little extra const the same as SPUseReference, linkage blows up?

Gail

Gail Banaszkiewicz wrote:
I added a class called SPTRefReference, similar to SPUseReference. It 
extends URIReference.  When I try to instantiate it in my tref struct's 
init function (tref->ref = new SPTRefReference(SP_OBJECT(tref));), just 
as the SPUse struct does, it won't link. Something about missing 
definition for SPTRefReference's vtable.  Anyone know what step I am 
missing?  Probably something small or maybe related to this particular 
compiler (which I have not used before; at least not on Windows).

Much appreciated,
Gail