Importar y exportar
Puede importar símbolos públicos a una aplicación o exportar funciones de un archivo DLL mediante dos métodos:
Utilizar un archivo de definición de módulo (.def) al compilar el archivo DLL.
Utilizar las palabras clave __declspec(dllimport) o __declspec(dllexport) de una definición de función en la aplicación principal
Utilizar un archivo .def
Un archivo de definición de módulo (.def) es un archivo de texto que contiene una o varias instrucciones de módulo que describen distintos atributos de un archivo DLL. Si no utiliza __declspec(dllimport) o __declspec(dllexport) para exportar funciones de un archivo DLL, este archivo requiere un archivo .def.
Puede utilizar archivos .def para importar a una aplicación o para exportar desde un archivo DLL.
Utilizar __declspec
Visual C++ utiliza __declspec(dllimport) y __declspec(dllexport) para reemplazar la palabra clave __export utilizada previamente en las versiones de 16 bits de Visual C++.
No tiene que utilizar __declspec(dllimport) para que el código se compile correctamente, pero si lo hace, el compilador podrá generar código de mejor calidad. El compilador puede generar código de mejor calidad porque puede determinar si una función existe o no en un archivo DLL; por tanto, puede producir código que omita un nivel de direccionamiento indirecto que existiría normalmente en una función que cruza un límite de archivo DLL. Sin embargo, debe utilizar __declspec(dllimport) para importar variables utilizadas en un archivo DLL.
Con la sección EXPORTS apropiada del archivo .def, __declspec(dllexport) no es necesaria. __declspec(dllexport) se agregó para proporcionar una forma fácil de exportar funciones desde un archivo .exe o .dll sin utilizar ningún archivo .def.
El formato de Win32 Portable Executable está diseñado para minimizar el número de páginas que hay que retocar para corregir importaciones. Para ello, coloca todas las direcciones de importación de cualquier programa en un lugar denominado Tabla de direcciones de importación. Esto permite al cargador modificar únicamente una o dos páginas cuando se obtiene acceso a estas importaciones.