A polymorphic DLL contains an interface defined by a gate function and an abstract class with at least one virtual function.
The polymorphic DLL exports the gate function at ordinal 1, which typically constructs a concrete class derived from the abstract interface. The virtual function is then called, and the functions of the class are available.
Examples of polymorphic DLLs in Symbian platform include ECom plug-ins, device drivers, Front End Processors, and many more.
Each type of interface should specify its own UID, which is used as uid2 for the polymorphic DLL.
The function responsible for loading a polymorphic DLL should check that its uid2 corresponds with the expected interface type.
For polymorphic DLLs, the interpretation of uid3 depends on the interface type. uid3 may not be required by all interfaces.
The build process for a polymorphic DLL produces an import library, but it is not used.
The project file for a polymorphic DLL must specify the correct target type and UIDs:
Specify the TARGETTYPE line as:
TARGETTYPE dll
This implicitly specifies UID1 correctly. Note that some types of polymorphic DLLs, have particular support by the build tools, and have their own different target types. See Polymorphic DLL targettype summary.
Specify the UID for the DLL in a UID line:
UID <UID2> <UID3>
The UID2 value is defined by the interface which is being implemented. Some types of polymorphic DLL also require a third UID, but, if so, its meaning is defined by the DLL.