Creating an Ada Spec for the DLL Services (GNAT User’s Guide for Native Platforms)

#### 7.4.8.8 Creating an Ada Spec for the DLL Services ¶

A DLL typically comes with a C/C++ header file which provides the definitions of the routines and variables exported by the DLL. The Ada equivalent of this header file is a package spec that contains definitions for the imported entities. If the DLL you intend to use does not come with an Ada spec, you have to generate such a spec yourself. For example, if the header file of `API.dll` is a file `api.h` containing the following two definitions:

>     int some_var;
>     int get (char *);

then the equivalent Ada spec could be:

>     with Interfaces.C.Strings;
>     package API is
>        use Interfaces;

>        Some_Var : C.int;
>        function Get (Str : C.Strings.Chars_Ptr) return C.int;

>     private
>        pragma Import (C, Get);
>        pragma Import (DLL, Some_Var);
>     end API;