Dynamic linking consists of compiling and linking code into a form that is loadable by programs at run time as well as link time. The ability to load them at run time is what distinguishes them from ordinary object files. Various operating systems have different names for such loadable code:
- UNIX: Sharable Libraries
- Windows: Dynamic Link Libraries (DLL)
In this Help, you will call such files sharable libraries in order to have a consistent and uniform way to refer to them. It should be understood that this is a generic usage that applies equally to all of these systems. Sharable libraries contain functions that can be called by any program that loads them. Often, you must specify special compiler and linker options to build a sharable library. On many systems, the linker gives you control over which functions and data (often referred to as symbols) are visible from the outside (public symbols) and which are hidden (private symbols). Such control over the interface presented by a sharable library can be very useful. Your system documentation discusses these options and explains how to build a sharable library.
Dynamic linking is the enabling technology for many of the techniques discussed in this Help. If you intend to use any of these techniques, first review your system documentation on this topic.
CALL_EXTERNAL uses dynamic linking to call functions written in other languages from IDL.
LINKIMAGE and Dynamically Loadable Modules (DLMs)
LINKIMAGE and DLMs use dynamic linking to add external code that supports the standard IDL system routine interface to IDL as system routines.
Most of IDL is built as a sharable library. The actual IDL program that implements the standard interactive IDL program links to this library and uses it to do its work. Since IDL is a sharable library, it can be called by other programs.
The IDL RPC server is a program that links to the IDL sharable library. The IDL RPC client side library is also a sharable library. Your RPC client program links against it to obtain access to the IDL RPC system.