Share via


/EXPORT (Exporta una función)

Exporta una función desde el programa según un nombre o un ordinal, o según los datos.

Sintaxis

/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]

Comentarios

La opción /EXPORT especifica una función o un elemento de datos que se va a exportar desde el programa para que otros programas puedan llamar a esa función o usar esos datos. Las exportaciones se suelen definir en un archivo DLL.

Entryname es el nombre de la función o el elemento de datos, ya que el programa que realiza la llamada lo va a usar. ordinal especifica un índice en la tabla de exportación en un intervalo entre 1 y 65 535; si no se especifica ordinal, LINK asigna uno. La palabra clave NONAME exporta la función solo como ordinal, sin un nombre de entrada.

La palabra clave DATA especifica que el elemento exportado es un elemento de datos. El elemento de datos del programa cliente se debe declarar mediante extern __declspec(dllimport).

Existen cuatro métodos para exportar una definición, enumerados aquí en el orden de uso recomendado:

  1. __declspec(dllexport) en el código fuente

  2. Una instrucción EXPORTS en un archivo .def

  3. Una especificación /EXPORT en un comando de LINK

  4. Una directiva comment en el código fuente, con la forma #pragma comment(linker, "/export: definition ")

Todos estos métodos se pueden utilizar en el mismo programa. Cuando LINK compila un programa que contiene exportaciones, crea también una biblioteca de importación, excepto si se usa un archivo .exp en la compilación.

LINK usa formas representativas de identificadores. El compilador representa un identificador cuando crea el archivo .obj. Si entryname se especifica en el enlazador en su forma no representativa (como aparece en el código fuente), LINK intenta establecer una coincidencia única con el nombre. Si no la halla, LINK emite un mensaje de error. Use la herramienta DUMPBIN para obtener el formato de nombre representativo de un identificador cuando necesite especificarlo en el enlazador.

Nota:

No especifique el formato representativo de los identificadores de C declarados como __cdecl o __stdcall.

Si necesita exportar un nombre de función no representativo y tener diferentes exportaciones dependiendo de la configuración de compilación (por ejemplo, en compilaciones de 32 o 64 bits), puede usar archivos DEF distintos en cada configuración (en los archivos DEF no se pueden usar directivas condicionales de preprocesador). Como alternativa, puede usar una directiva #pragma comment antes de una declaración de función como se muestra aquí, donde PlainFuncName es el nombre no representativo y _PlainFuncName@4, el nombre representativo de la función:

#pragma comment(linker, "/export:PlainFuncName=_PlainFuncName@4")
BOOL CALLBACK PlainFuncName( Things * lpParams)

Para establecer esta opción del vinculador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>Enlazador>Línea de comandos.

  3. Escriba la opción en el cuadro Opciones adicionales.

Para establecer esta opción del vinculador mediante programación

Consulte también

Referencia del enlazador MSVC
Opciones del enlazador MSVC