A polymorphic DLL is loaded by calling one of the Load()
member functions of an RLibrary
object.
Load()
has three overloaded variants but they all behave in
a similar way. They are prototyped:
TInt Load(const TDesC& aFileName,const TDesC& aPath,const TUidType& aType);
TInt Load(const TDesC& aFileName,const TUidType& aType);
TInt Load(const TDesC& aFileName,const TDesC& aPath=KNullDesC);
The arguments determine how the DLL is to be found. The rules are summarised as follows:
If aFileName
is a fully defined filename, i.e. it
includes a path specification, then the contents of aPath
are
ignored and an attempt is made to load aFileName
, if specified; if
this DLL cannot be found, then the load operation fails and no further
searching is done.
if aFileName
does not have an extension, an extension of
.DLL
is assumed.
If aFileName
contains a file name but does
not include a path specification (e.g. EULIBDR1.DLL
),
then a search is done in the following locations in the order given:
the path defined in aPath
, if specified
the system path \sys\bin\
on each attached drive.
Drives are searched in the order: C:
(the device's main internal
drive), then Y:
, X:
, W:
,
V:
, U:
, ..., D:
, B:
,
A:
and finally, drive Z:
(the ROM).
If aType
is specified, then the UIDType of the loaded
DLL must match aType
. If aType
is
KNullUid
, or the variant of Load()
that does not take
aType
is called, then the loaded DLL will have the name
aFileName
and may have any UIDType.
Note that in WINS debug mode, the system path is
\epoc32\release\wins\udeb\
on the current PC drive; in WINS
release mode, the system path is \epoc32\release\wins\urel\
on the
current PC drive. For WINSCW, the paths are the same as for WINS, except that
wins\
becomes winscw\
.
Note also that, in contrast with the usual convention, aPath
specifies a list of directories, each one separated by a semicolon.
See also: