Re: Keeping Standard Mangling
On Aug 13, 8:33 pm, Jerry Coffin <jerryvcof...@yahoo.com> wrote:
In article <h61jp5$9...@news.albasani.net>, cr88...@hotmail.com
says...
[ ... ]
[ ... ]
partial reasons:
sharing a struct means that one side or another is
inherently bound to the current version of the struct in
question, and so subtle changes to struct layout will break
code (creating versioning issues); different compilers may
follow different alignment rules (other things being the
same, member alignment tends to be variable in many cases);
different compilers rarely lay out classes exactly the same
(for example, different vtable layouts, different RTTI data,
...);
...
Essentially all of this is also true with plain C structs
though...
Except that almost all platforms define a C ABI, which all
compilers respect, since otherwise, system calls wouldn't work.
The only platform I know of off hand that defines a C++ ABI is
the IA64.
apparently, on OS's such as Windows, each DLL ends up with a
partially disjoint heap, and so allocating things in one
library and freeing them in another is a good way to cause
crashes.
That can be, but isn't necessarily the case. It depends on how
the DLL was written and (mostly) how it was compiled. It's
pretty easy to make it work by knowing what you're doing, or
even just following a few (fairly trivial) rules.
I'm not sure, but I think the linking plays a role as well; if
you link with the dynamic crt, you don't have problems. (At
least, I've never had problems doing this.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34