¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Definiciones y declaraciones (C++)

Interfaz DLL hace referencia a todos los elementos (funciones y datos) que se conocen para exportarse algún de programa en el sistema; es decir, todos los elementos declarados como dllimport o dllexport. Todas las declaraciones incluidas en la interfaz DLL deben especificar dllimport o el atributo de dllexport . Sin embargo, la definición debe especificar el atributo de dllexport . Por ejemplo, la definición de función siguiente genera un error del compilador:

__declspec( dllimport ) int func() {   // Error; dllimport
                                    // prohibited on definition.
   return 1;
}

este código también genera un error:

#define DllImport   __declspec( dllimport )

__declspec( dllimport ) int i = 10;  // Error; this is a
                                     // definition.

Sin embargo, ésta es la sintaxis correcta:

__declspec( dllexport ) int i = 10;     // Okay--export definition

el uso de dllexport implica una definición, mientras que dllimport implica una declaración. Debe utilizar la palabra clave de extern con dllexport para forzar una declaración; si no, una definición es implícito. así, los ejemplos siguientes son correctos:

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

extern DllImport int k; // These are both correct and imply a
DllImport int j;        // declaration.

Los ejemplos siguientes aclaran anterior:

static __declspec( dllimport ) int l; // Error; not declared extern.

void func() {
    static __declspec( dllimport ) int s;  // Error; not declared
                                           // extern.
    __declspec( dllimport ) int m;         // Okay; this is a 
                                           // declaration.
    __declspec( dllexport ) int n;         // Error; implies external
                                           // definition in local scope.
    extern __declspec( dllimport ) int i;  // Okay; this is a
                                           // declaration.
    extern __declspec( dllexport ) int k;  // Okay; extern implies
                                           // declaration.
    __declspec( dllexport ) int x = 5;     // Error; implies external
                                           // definition in local scope.
}

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft