Assuming the API is provided in the form of a shared library (also known as DLL), you may be able to upgrade the API to a new version without recompiling your application and also without relinking your application, just by replacing the old shared library with a new one.
There might be API releases that contain only static libraries, or no libraries at all. In both cases the discussion in this section does not apply to you.
The interoperability between your application and the shared library is managed using the GUID of the main interface mi::neuraylib::INeuray. Whenever an incompatible change is made to the API a new GUID is generated. Typically, this only happens with major releases.
In your application you ask the shared library for a pointer to a compatible mi::neuraylib::INeuray interface by passing its GUID mi::neuraylib::INeuray::IID() to the global function mi_factory (the main entry point to the DSO). If the shared library does not contain a mi::neuraylib::INeuray interface with a matching GUID NULL
is returned. In this case it is possible to use the mi_factory function to obtain a pointer to an mi::neuraylib::IVersion interface. This interface provided detailed version information like build number, build date, the product version name and the GUID of the mi::neuraylib::INeuray interface compiled into the library.