The argument against using pure virtual interfaces for plugin and engine interfaces has been the possibility that virtual calls between code produced by incompatible C++ compilers may not work correctly or crash. However, all known pairs of incompatible C++ compilers using different symbol mangling rules, which precludes cross compiler symbol resolution for non-C symbols during both linking and dynamic library loading.

The slightly longer explanation is that either the linker or loader knows beans about C++ and virtual functions -- they just do exact symbol match. The compiles, however, encode (aka mangle) symbols to include namespace scoping and argument types. Neither the linker nor the loader would detect (or care) about different manglements of the same symbols from different C++ compilers.

See http://www.agner.org/optimize/calling_conventions.pdf for the gory details.

Matt, the ball is in your court.

--
Jim Starkey
Founder, NimbusDB, Inc.
978 526-1376


_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to