Next: Building DLLs with GNAT Project files, Previous: Introduction to Dynamic Link Libraries DLLs, Up: Mixed-Language Programming on Windows
To use the services of a DLL, say API.dll
, in your Ada application
you must have:
API.dll
. If not available this Ada spec must be built from the C/C++
header files provided with the DLL.
libAPI.dll.a
or API.lib
). As previously
mentioned an import library is a statically linked library containing the
import table which will be filled at load time to point to the actual
API.dll
routines. Sometimes you don't have an import library for the
DLL you want to use. The following sections will explain how to build
one. Note that this is optional.
API.dll
.
Once you have all the above, to compile an Ada application that uses the
services of API.dll
and whose main subprogram is My_Ada_App,
you simply issue the command
$ gnatmake my_ada_app -largs -lAPI
The argument `-largs -lAPI' at the end of the `gnatmake' command tells the GNAT linker to look for an import library. The linker will look for a library name in this specific order:
libAPI.dll.a
API.dll.a
libAPI.a
API.lib
libAPI.dll
API.dll
The first three are the GNU style import libraries. The third is the Microsoft style import libraries. The last two are the actual DLL names.
Note that if the Ada package spec for API.dll
contains the
following pragma
pragma Linker_Options ("-lAPI");
you do not have to add `-largs -lAPI' at the end of the `gnatmake' command.
If any one of the items above is missing you will have to create it
yourself. The following sections explain how to do so using as an
example a fictitious DLL called API.dll
.