|
|
|
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:
TFindFile