Next: , Previous: Introduction to Dynamic Link Libraries (DLLs), Up: Microsoft Windows Topics


G.8 Using DLLs with GNAT

To use the services of a DLL, say API.dll, in your Ada application you must have:

  1. The Ada spec for the routines and/or variables you want to access in API.dll. If not available this Ada spec must be built from the C/C++ header files provided with the DLL.
  2. The import library (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.
  3. The actual DLL, 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 first for a library named API.lib (Microsoft-style name) and if not found for a libraries named libAPI.dll.a, API.dll.a or libAPI.a. (GNAT-style name). 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.