Re: STL objects and binary compatibility
On May 6, 9:10 pm, Gianni Mariani <gi4nos...@mariani.ws> wrote:
osama...@gmail.com wrote:
further reading are greatly appreciated.
It sounds like you're a little confused.
Binary compatablity usually is associated with a context.
If you build with different versions of the STL or with
various options that render binary incompatibility, then
this is your choice.
Please elaborate what you're really concerned about.
Sorry my question was not very clear. In other words, can
STL Objects cross DLL boundaries. For example. Can we pass
STL objects between different binaries by reference safely?
Only if you're using the same STL library (or binary
compatible library). This usually means you're stuck with
making sure that the DLL versions are using the same compiler
major revision.
And the same compiler options. At least some of them can also
affect the binary compatibility. Using g++, try linking code
compiled with -D_GLIBCXX_DEBUG, and code compiled without it.
(Actually, it links just fine---it just crashes at runtime.)
And while I've not actually tried it, I would expect similar
problems with VC++ using mixtures of /Gd, /Gr and /Gz or
different values of /vm<x> or /Zc:wchar_t. (In practice,
without /vmg, you'll get binary incompatibility anyway.)
Note too (to the original poster) that whether you're using
dynamic linking or not is really irrelevant. If the object or
library files are not binary compatible, you can't statically
link them either (or the results of the static link will crash).
--
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