Note that it is preferred to use the built-in GNAT DLL support (see Building DLLs with GNAT) or GNAT Project files (see Building DLLs with GNAT Project files) to build DLLs.
This section explains how to build DLLs containing Ada code using
gnatdll. These DLLs will be referred to as Ada DLLs in the
remainder of this section.
The steps required to build an Ada DLL that is to be used by Ada as well as non-Ada applications are as follows:
Stdcallcalling convention to avoid any Ada name mangling for the entities exported by the DLL (see Exporting Ada Entities). You can skip this step if you plan to use the Ada DLL only from Ada applications.
adainitgenerated by gnatbind to perform the elaboration of the Ada code in the DLL (see Ada DLLs and Elaboration). The initialization routine exported by the Ada DLL must be invoked by the clients of the DLL to initialize the DLL.
adafinalgenerated by gnatbind to perform the finalization of the Ada code in the DLL (see Ada DLLs and Finalization). The finalization routine exported by the Ada DLL must be invoked by the clients of the DLL when the DLL services are no further needed.
gnatdllto produce the DLL and the import library (see Using gnatdll).
Note that a relocatable DLL stripped using the
binutils tool will not be relocatable anymore. To build a DLL without
debug information pass
-largs -s to
restriction does not apply to a DLL built using a Library Project.
see Library Projects.