Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Especifica o endereço básico de um programa.
Sintaxe
/BASE:{address[,size] |@filename,key}
Comentários
Observação
Por motivos de segurança, a Microsoft recomenda que você use a opção /DYNAMICBASE em vez de especificar endereços básicos para seus executáveis. /DYNAMICBASE gera uma imagem executável que pode ser rebaseada aleatoriamente no momento do carregamento usando o recurso ASLR (address space layout randomization) do Windows. A opção /DYNAMICBASE fica ativada por padrão.
A opção /BASE do vinculador define um endereço básico do programa. Ela substitui o local padrão de um arquivo EXE ou DLL. O endereço básico padrão de um arquivo EXE é 0x400000 para imagens de 32 bits ou 0x140000000 para imagens de 64 bits. Para uma DLL, o endereço base padrão é 0x10000000 para imagens de 32 bits ou 0x180000000 para imagens de 64 bits. Em sistemas operacionais que não oferecem suporte à randomização de layout de espaço de endereço (ASLR) ou quando a opção /DYNAMICBASE:NO for definida, o sistema operacional primeiro tenta carregar um programa em seu endereço base especificado ou padrão. Se o espaço disponível ali for insuficiente, o sistema realocará o programa. Para evitar a realocação, use a opção /FIXED.
O vinculador emite um erro se address não for um múltiplo de 64K. Como opção, você pode especificar o tamanho do programa. O vinculador emitirá um aviso se o programa não puder se ajustar ao tamanho especificado.
Na linha de comando, outra maneira de especificar o endereço básico é usando um arquivo de resposta de endereço base. Um arquivo de resposta de endereço básico é um arquivo de texto que contém os endereços básicos e tamanhos opcionais de todas as DLLs que seu programa usa e uma chave de texto exclusiva para cada endereço de base. Para especificar um endereço básico usando um arquivo de resposta, use um símbolo de arroba (@) seguido pelo nome do arquivo de resposta, filename, seguido por uma vírgula e, em seguida, o valor key para o endereço básico a ser usado no arquivo. O vinculador procura por filename no caminho especificado ou, se nenhum caminho for especificado, nos diretórios especificados na variável de ambiente LIB. Cada linha em filename representa uma DLL e tem a seguinte sintaxe:
keyaddress[size];comment
key é uma cadeia de caracteres alfanumérica e não diferencia maiúsculas de minúsculas. Geralmente é o nome de uma DLL, mas isso não é necessário. key é seguido por uma base address em linguagem C, notação hexadecimal ou decimal e um máximo opcional de size. Todos os três argumentos são separados por espaços ou tabulações. O vinculador emite um aviso se o size especificado for menor que o espaço de endereço virtual exigido pelo programa. Um comment é especificado por um ponto e vírgula (;) e pode estar na mesma linha ou em uma linha separada. O vinculador ignora todo o texto desde o ponto e vírgula até o final da linha. Este exemplo mostra parte de tal arquivo:
main 0x00010000 0x08000000 ; for PROJECT.exe
one 0x28000000 0x00100000 ; for DLLONE.DLL
two 0x28100000 0x00300000 ; for DLLTWO.DLL
Se o arquivo que contém essas linhas for chamado DLLS.txt, o comando de exemplo a seguir aplicará essas informações:
link dlltwo.obj /dll /base:@dlls.txt,two
Outra maneira de definir o endereço básico é usar o argumento BASE em uma instrução NAME ou LIBRARY. As opções /BASE e /DLL juntas são equivalentes à instrução LIBRARY.
Para definir esta opção do vinculador no ambiente de desenvolvimento do Visual Studio
Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.
Selecione a página de propriedades Propriedades da Configuração>Vinculador>Avançado.
Modifique a propriedade Endereço básico.
Para definir esta opção do vinculador por meio de programação
- Consulte BaseAddress.