Finally locked down how to use the BUMP_EXPORT directive for a parent class to a templated subclass.

The templated subclass always has to be fully implemented in the header and cannot have the BUMP_EXPORT directive because it is not going to be imported or exported by the dll. It will instead be part of the calling library or application since it is implemented in the header.

The important thing that was missing earlier is that you cannot have virtual method in the parent class with them overridden in the templated subclass. You can only have pure virtual methods. Otherwise it appears that the linker cannot figure out whether to grab the symbols from the library or the header. That's my best guess as to what's going on here. Either way, by making the methods pure virtual, the issue is resolved.