Linker and Libraries Guide

Multiple External Versioned Files in the Same Process

The creation of a new externally versioned shared object is a major change. Be sure you understand the complete dependencies of any processes that use a member of a family of externally versioned shared objects.

For example, an application might have a dependency on and an externally delivered object This latter object might also have a dependency on The application might be redesigned to use the new interfaces in However, the application might not change the use of the external object Depending on the scope of visibility of the implementations of that get loaded at runtime, both major versions of the file can be brought into the running process. The only reason to change the version of is to mark an incompatible change. Therefore, having both versions of the object within a process can lead to incorrect symbol binding and hence undesirable interactions.

The creation of an incompatible interface change should be avoided. Only if you have full control over the interface definition, and all of the objects that reference this definition, should an incompatible change be considered.