Share via


/BASE (dirección base)

Especifica la dirección base para un programa.

Sintaxis

/BASE:{address[,size] | @filename,key}

Comentarios

Nota:

Por motivos de seguridad, Microsoft recomienda usar la opción /DYNAMICBASE en lugar de especificar direcciones base para los ejecutables. /DYNAMICBASE genera una imagen ejecutable que se puede fusionar mediante cambio de base aleatoriamente en el momento de la carga mediante la característica de selección aleatoria del diseño del espacio de direcciones (ASLR) de Windows. La opción /DYNAMICBASE está activada de forma predeterminada.

La opción de enlazador /BASE establece una dirección base para el programa. Invalida la ubicación predeterminada de un archivo EXE o DLL. La dirección base predeterminada para un archivo EXE es 0x400000 para imágenes de 32 bits o 0x140000000 para imágenes de 64 bits. Para un archivo DLL, la dirección base predeterminada es 0x10000000 para imágenes de 32 bits o 0x180000000 para imágenes de 64 bits. En los sistemas operativos que no admiten la selección aleatoria del diseño del espacio de direcciones (ASLR), o cuando se estableció la opción /DYNAMICBASE:NO, el sistema operativo primero intenta cargar un programa en su dirección base especificada o predeterminada. Si no hay suficiente espacio disponible allí, el sistema reubica el programa. Para evitar la reubicación, use la opción /FIXED.

El enlazador emite un error si address no es un múltiplo de 64 K. Opcionalmente, puede especificar el tamaño del programa. El enlazador emite una advertencia si el programa no se ajusta al tamaño especificado.

En la línea de comandos, otra manera de especificar la dirección base es mediante un archivo de respuesta de dirección base. Un archivo de respuesta de dirección base es un archivo de texto que contiene las direcciones base y tamaños opcionales de todos los archivos DLL que usa el programa y una clave de texto única para cada dirección base. Para especificar una dirección base mediante un archivo de respuesta, use un signo de arroba (@) seguido del nombre del archivo de respuesta, filename, seguido de una coma y, a continuación, el valor key para la dirección base que se usará en el archivo. El enlazador busca filename en la ruta de acceso especificada, o si no se especifica ninguna ruta de acceso, en los directorios especificados en la variable de entorno LIB. Cada línea en filename representa un archivo DLL y tiene la sintaxis siguiente:

keyaddress [size] ;comment

El valor key es una cadena de caracteres alfanuméricos y no distingue mayúsculas de minúsculas. Normalmente es el nombre de un archivo DLL, pero eso no es necesario. key va seguido de una base address en notación en lenguaje C, hexadecimal o decimal, y un size máximo opcional. Los tres argumentos están separados por espacios o tabulaciones. El enlazador emite una advertencia si el size especificado es menor que el espacio de direcciones virtual requerido por el programa. Un elemento comment se especifica mediante un punto y coma (;) y puede estar en la misma línea o en una línea independiente. El enlazador ignora todo el texto del punto y coma hasta el final de la línea. En este ejemplo se muestra parte de este archivo:

main   0x00010000    0x08000000    ; for PROJECT.exe
one    0x28000000    0x00100000    ; for DLLONE.DLL
two    0x28100000    0x00300000    ; for DLLTWO.DLL

Si el archivo que contiene estas líneas se denomina DLLS.txt, el siguiente comando de ejemplo aplica esta información:

link dlltwo.obj /dll /base:@dlls.txt,two

Otra manera de establecer la dirección base es mediante el argumento BASE en una instrucción NAME o LIBRARY. Las opciones /BASE y /DLL juntas son equivalentes a la instrucción LIBRARY.

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>Avanzado.

  3. Modifique la propiedad Dirección base.

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

Consulte también

Referencia del enlazador MSVC
Opciones del enlazador MSVC