Symbian
Symbian OS Library

FAQ-1213 How do I update my static interface DLL with a new version?

[Index][spacer] [Previous] [Next]



 

Classification: C++ Category: Development
Created: 01/24/2005 Modified: 09/15/2005
Number: FAQ-1213
Platform: ER5, Symbian OS v6.0, Symbian OS v6.1, Symbian OS v7.0, Symbian OS v7.0s, Symbian OS v8.0, Symbian OS v8.0a, Symbian OS v8.0b, Symbian OS v8.1a, Symbian OS v8.1b

Question:
How do I update my static interface DLL with a new version?

Answer:
The loader will statically link to the first version of the specified DLL that it finds in the drive search order C, Y, X, ..., D, B, A, Z. Therefore, in order to replace/update a static interface DLL you need to put the new DLL on a drive higher in the search order.

There are several caveats to the above:
  • An exe/DLL is in ROM will always use the DLL version in ROM. Therefore, in order to update code in ROM, you also need to update any exes/DLLs in ROM that link to it.
  • If a version of the static interface DLL has already been loaded, then this will be used by all non-ROM-based DLLs/EXEs that subsequently link to it.

For example, consider a server called MyServer.exe that links to a static interface DLL called Utility.dll. Both MyServer.exe and Utility.dll are on ROM. If you install a new version of Utility.dll on MMC card, this will not be used when MyServer.exe is loaded. However, if you install both MyServer.exe and Utility.dll on MMC, then Utility.dll *will* be used when the MyServer.exe on MMC is launched. If you then launch the ROM-based MyServer.exe (so both versions of the EXE are running), this will use the original ROM-based Utility.dll.