Re: DLL export and class template statics
On Thu, 08 Jan 2009 23:50:12 +0100, Hendrik Schober <spamtrap@gmx.de>
wrote:
Well, this decision was made before I joined the company
and it's not my decision whether it be kept. (FTM, consider
these static libraries which were made dynamic merely for
reducing link-times. This is not a shop creating long-
living products. They make short-living projects and they
have to make them fast. These libs is all what's common to
those projects.)
Anyway, one can export C++ classes from DLLs, so people do
this. I need to find a way to do this in this case. Anyone
out there has an idea how?
The standard answer is to explicitly instantiate and dllexport all the
template specializations you use from some common DLL, and then have
everyone who uses those specializations obtain them from that DLL. The
technique is presented here:
http://support.microsoft.com/kb/168958
If you can eliminate the template static data, almost certainly you can
avoid doing that and just let the compiler instantiate the template in
every module that uses it. That is, if you're doing everything else
necessary for class exporting to work reliably (uniform compiler settings,
CRT DLL usage, etc), it's very unlikely that multiple copies of template
code will hurt anything beyond code speed and size, both of which are
usually negligible concerns in this context.
--
Doug Harrison
Visual C++ MVP