From: E. Gladyshev (egladysh_at_[hidden])
Date: 2002-03-26 12:44:14
> or even other languages. The name mangling done by
> your C++ compiler can
> prevent the DLL from being used by other C++
> compilers or by other languages
> that can easily call "C" functions exported from
Even worse the name mangling is different
even between different version of the same compiler.
For instance if your switch from VC++ v5.0 to VC++
you would have to rebuild all the DLL's in your
company project. Bur first you would have to
make sure that all your teams have switched to VC++
and all your consultants have done it as well.
If you got about 40 DLL subprojects supported
by different teams, it is very painful.
1. If an exported class is derived from a base class
and the base class is changed you would have
to rebuild the whole project most likely all teams
will have to do that, even if the change is
only affect the internal functinality of
the exported class.
2. In VC++ environment there are memory allocation
problems if you are not using the DLL version of
the C run-time library. It is well documented
by MS and others. So you do have to ensure that
all VC++ project settings are consistent
for all teams in your company and for
other companies that you are working with.
3. There are problems with inline functions.
Don't even dare to modify them without making
all the teams to rebuild their components.
All these problems don't exist for C interfaces.
My company tried to export C++ classes and we
got about 40 DLL subprojects and some are
outsourced. It is a nightmare... Don't
go down this road, it is not practical
for real huge projects.
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards®
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk