dllexport, dllimport

Específicos de Microsoft

Los dllexport atributos de clase de almacenamiento y son extensiones específicas de Microsoft para los dllimport lenguajes C y C++. Se pueden utilizar para exportar e importar funciones, datos y objetos a o de una DLL.

Sintaxis

   __declspec( dllimport ) declarator
   __declspec( dllexport ) declarator

Comentarios

Estos atributos definen explícitamente la interfaz de la DLL para el cliente, que puede ser el archivo ejecutable u otra DLL. La declaración de funciones como elimina la necesidad de un archivo de definición de módulo (.def), al menos con respecto a la especificación dllexport de las funciones exportadas. El dllexport atributo reemplaza la palabra dllexport clave.

Si una clase está marcada con declspec(dllexport), cualquier especialización de las plantillas de clase en la jerarquía de clases se marca implícitamente como declspec(dllexport). Esto significa que se crean explícitamente instancias de las plantillas de clase y que los miembros de la clase se deben definir.

dllexport de una función expone la función con su nombre decorado. Para las funciones de C++, esto incluye la eliminación de nombres. Para las funciones de C o las funciones declaradas como extern "C", esto incluye la decoración específica de la plataforma que se basa en la convención de llamada. Para obtener información sobre la decoración de nombres en código de C/C++, vea Nombres decorados. No se aplica ninguna decoración de nombres a las funciones exportadas de C ni a las funciones extern "C" de C++ que usan la __cdecl convención de llamada.

Para exportar un nombre no representativo, puede vincular mediante un archivo de definición de módulo (.def) que define el nombre no representativo de una sección EXPORTS. Para obtener más información, vea EXPORTS. Otra manera de exportar un nombre no decorado es usar una #pragma comment(linker, "/export:alias=decorated_name") directiva en el código fuente.

Al declarar o dllexport , debe usar la dllimport sintaxis de atributo extendida dllexport la palabra __declspec clave .

Ejemplo

// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();

Opcionalmente, para que el código sea más legible, puede utilizar definiciones de macro:

#define DllImport   __declspec( dllimport )
#define DllExport   __declspec( dllexport )

DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;

Para obtener más información, consulte:

FIN de Específicos de Microsoft

Vea también

__declspec
Palabras clave