Building a DLL target generates two files:
The compiled DLL binary: this file contains the executable code
that is called at run-time. It often has the extension .DLL
,
though some DLLs have extensions that indicate their particular purpose, e.g.
.ANI
for animation DLLs.
Import library: represents the exported interface of the DLL. This allows other programs to use the DLL, by linking against the import library at build time.
Import libraries have the extension .lib
in the
emulator and ARM ABIv1 builds, or .dso
in the ARM ABIv2
builds.
Other programs can use DLLs in two ways:
By linking against them at build time, using the interface defined in a C++ header file, and in the DLL's import library.
DLLs designed to be used in this way are called static interface DLLs.
By using an API to dynamically load and call the DLL at run-time. DLLs designed to be used in this way are called polymorphic interface DLLs.
See Frameworks, libraries and DLLs for more on this idiom, and Dynamically Loading Link Libraries API for details of the API.
The following pages discuss the special configuration issues associated with building for DLL targets.