Symbian Def Files
Symbian Def Files
This documentation is targeted at contributors to Qt.
The Symbian toolchains require the list of exported symbols in shared libraries to be maintained explicitly in .def files.
For Qt, these files are maintained alongside the Qt source code, under
src/s60installs/eabi
(ARM) and
src/s60installs/bwins
(emulator).
If you add or remove public functions to Qt without updating these .def files, you will break the compilation of Qt for Symbian.
More information: Exports and Freezing in the Build [symlab.org]
Diagnosing .def file errors
(note: .def files apply to all supported Symbian versions, but the commands mentioned in this section only work when using the Raptor build system).
If you add an exported function, but don’t add it to the def file, then it won’t appear in the import library.
- Usual symptom: link error in the application / higher level dll that uses the new function
- Diagnostic: warnings about unfrozen exports when building the dll
- Solution: use the freeze command to add new function to the def file
If you remove an exported function, but don’t remove it from the def file, then the dll build will fail. (flagged as a potential BC break)
- Diagnostic: errors about missing exports when building the dll
- Solution: add the ABSENT keyword to the def file on the functions you removed
If you re-add a previously removed function, but don’t update the def file, then it won’t appear in the import library.
- Usual symptom: link error in the application / higher level dll that uses the new function
- Diagnostic: warnings about symbols present in ELF file but absent in DEF file when building the dll
- Solution: remove the ABSENT keyword from the def file on the functions you readded
This needs to be done manually
Note: you need to configure without
-developer-build
or
-nokia-developer
, to avoid autotest exports being added to the def files.