Symbian Def Files: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(Mark Outdated: Symbian no longer supported)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
=Symbian Def Files=
{{Outdated|reason=The Symbian platform is no longer supported.}}
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 
[[Category:Developing_Qt::Symbian]]
 
= Symbian Def Files =


This documentation is targeted at contributors to Qt.
This documentation is targeted at contributors to Qt.
Line 5: Line 10:
The Symbian toolchains require the list of exported symbols in shared libraries to be maintained explicitly in '''.def''' files.
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 <code>src/s60installs/eabi</code> (<span class="caps">ARM</span>) and <code>src/s60installs/bwins</code> (emulator).
For Qt, these files are maintained alongside the Qt source code, under <code>src/s60installs/eabi</code> (ARM) and <code>src/s60installs/bwins</code> (emulator).


If you add or remove public functions to Qt without updating these .def files, '''you will break the compilation''' of Qt for Symbian.
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: [http://www.symlab.org/wiki/index.php/Exports_and_Freezing_in_the_Build Exports and Freezing in the Build] ''[symlab.org]''
More information: [http://www.symlab.org/wiki/index.php/Exports_and_Freezing_in_the_Build Exports and Freezing in the Build]


==Diagnosing .def file errors==
== 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).
(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.
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
* '''Usual symptom''': link error in the application / higher level dll that uses the new function
* '''Diagnostic''': warnings about unfrozen exports when building the dll
* '''Diagnostic''': warnings about unfrozen exports when building the dll
* '''Solution''': use the freeze command to add new function to the def file<br />
* '''Solution''': use the freeze command to add new function to the def file
 
<code>sbs -c armv6_urel -c winscw_urel freeze<code>
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)


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
* '''Diagnostic''': errors about missing exports when building the dll
* '''Solution''': add the <span class="caps">ABSENT</span> keyword to the def file on the functions you removed<br />
* '''Solution''': add the ABSENT keyword to the def file on the functions you removed
 
</code>sbs -c armv6_urel.remove_freeze -c winscw_urel.remove_freeze freeze</code> Or edit the file manually
If you re-add a previously removed function, but don’t update the def file, then it won’t appear in the import library.


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
* '''Usual symptom''': link error in the application / higher level dll that uses the new function
* '''Diagnostic''': warnings about symbols present in <span class="caps">ELF</span> file but absent in <span class="caps">DEF</span> file when building the dll
* '''Diagnostic''': warnings about symbols present in ELF file but absent in DEF file when building the dll
* '''Solution''': remove the <span class="caps">ABSENT</span> keyword from the def file on the functions you readded<br />   This needs to be done manually
* '''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''' <code>-developer-build</code> or <code>-nokia-developer</code>, to avoid autotest exports being added to the def files.
Note: you need to configure '''without''' <code>-developer-build</code> or <code>-nokia-developer</code>, to avoid autotest exports being added to the def files.
===Categories:===
* [[:Category:Developing Qt|Developing_Qt]]
** [[:Category:Developing Qt::Symbian|Symbian]]

Latest revision as of 15:18, 19 March 2015

IMPORTANT: The content of this page is outdated. Reason: The Symbian platform is no longer supported.
If you have checked or updated this page and found the content to be suitable, please remove this notice.
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

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

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
sbs -c armv6_urel -c winscw_urel freeze<code>

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

sbs -c armv6_urel.remove_freeze -c winscw_urel.remove_freeze freeze Or edit the file manually

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.