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;