

Symbian DEF File

From Wiki
Jump to: navigation, search

This Symbian C++ build toolchain .def file is used to ensure that DLLs remain binary compatible between releases, by listing the order that the import library must export functions. This article provides a overview of what DEF files are for and how they are used.

Article Metadata
Created: vasant21 (29 May 2007)
Last edited: hamishwillee (30 Jan 2012)


Symbian uses link by ordinal instead of link by name, stripping the name from release executables. As a result, in order for DLLs to remain binary compatible between rebuilds, the ordinal position of exported functions needs to remain the same.

Keeping the functions exported in the same place is done using a def file. After building an application for the first time you can call abld freeze to create a DEF file listing the current function order.

The name of the def file associated with your project defaults to <your_projectname>U.DEF and is located in your project’s /BARM (for ARM build targets) or BWINS (for emulator build targets) directory. The "U" stands for Unicode build in your BARM directory. You can specify a new name and location for this file by using the DEFNAME statement in the DLL’s mmp file. Also, nostrictdef can be added to the mmp file to cause the U not to be added to the def file name.

On subsequent rebuilds this DEF file is used to ensure that the same positions are mapped. You are also warned if any exports are not in the DEF file and can re-freeze the def file and add the new (higher numbered) exports.

Note.pngNote: An additional def file is generated on each DLL build in the project’s epoc32/build directory. When interface freezing is disabled (by specifying EXPORTUNFROZEN in your mmp) the import library is generated from this intermediate def file.

This page was last modified on 30 January 2012, at 05:10.
72 page views in the last 30 days.

Was this page helpful?



Thank you!

We appreciate your feedback.