Each DLL project with FREEZE enabled is associated with a def file that defines where the abld freeze writes to. The build then uses this def file in the following situations:
Contents |
When the DLL is built, the project’s frozen def file is consulted. The linker will ensure that all functions specified in the def file will remain at the same specified ordinal position ensuring backward compatibility with the import library produced after the last freeze. New functions in the DLL will receive new, higher-numbered ordinals (which will be added to the def on the next freeze).
With interface freezing enabled, the import library is directly generated using the DLL interface defined in the project’s def file. While interface freezing is disabled, the import library is always generated using the interface from the just-generated DLL. This is why the first build of a DLL will fail to generate an import library if an abld freeze command was not done – no def file yet exists.
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. 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.
There is an additional def file that is generated on each DLL build, and this should not be confused with the def file discussed above. This file is an intermediate file, located in the project’s epoc32/build directory, and always reflects the current interface of the DLL. When interface freezing is disabled (EXPORTUNFROZEN in your mmp) the import library is generated from this intermediate def file.
No related wiki articles found