dllexport, dllimport

Específicos de Microsoft

Los atributos de clase de almacenamiento dllexport y dllimport son extensiones específicas de Microsoft para los 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. Declarar funciones como dllexport elimina la necesidad de un archivo de definición de módulos (.def), al menos en relación con la especificación de funciones exportadas. El atributo dllexport reemplaza la palabra clave __export.

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, a veces conocido como "mangling de nombres". Para las funciones de C++, el nombre decorado incluye caracteres adicionales que codifican el tipo y la información de parámetros. Funciones o funciones de C que se declaran como extern "C" siguen las reglas de decoración de nombres de C. Para más información sobre la decoración de nombres en el código de C o C++, vea Nombres representativos.

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 forma de exportar un nombre no representativo es usar una directiva #pragma comment(linker, "/export:alias=decorated_name") en el código fuente.

Cuando declare dllexport o dllimport, debe utilizar la sintaxis de atributo extendida y la palabra clave __declspec.

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 más información, vea:

FIN de Específicos de Microsoft

Consulte también

__declspec
Palabras clave