Vinculação
Em um projeto C++, a etapa de vinculação é executada depois que o compilador compila o código-fonte em arquivos de objeto (*.obj). O vinculador (link.exe
) combina os arquivos de objeto em um único arquivo executável.
As opções do vinculador podem ser definidas dentro ou fora do Visual Studio. No Visual Studio, você acessa as opções do vinculador clicando com o botão direito do mouse em um nó de projeto em Gerenciador de Soluções e escolhendo Propriedades para exibir as páginas de propriedades. Escolha o Vinculador no painel esquerdo para expandir o nó e ver todas as opções.
Sintaxe de linha de comando do vinculador
Ao executar o vinculador fora do Visual Studio, você pode especificar a entrada de uma ou mais maneiras:
- Na linha de comando
- Usando arquivos de comando
- Em variáveis de ambiente
O vinculador primeiro processa as LINK
opções especificadas na variável de ambiente, seguidas pelas opções na ordem em que são especificadas na linha de comando e nos arquivos de comando. Se uma opção for repetida com argumentos diferentes, a última processada terá precedência.
As opções se aplicam a todo o build. Nenhuma opção pode ser aplicada a arquivos de entrada específicos.
Para executar link.exe
o , use a seguinte sintaxe de comando:
link arguments
Os arguments
incluem opções e nomes de arquivo e podem ser especificados em qualquer ordem. As opções são processadas primeiro e, em seguida, os arquivos. Use um ou mais espaços ou tabulações para separar argumentos.
Observação
Você só pode iniciar essa ferramenta no prompt de comando do Visual Studio. Você não pode iniciá-lo por um prompt de comando do sistema ou pelo Explorador de Arquivos.
Linha de comando
Na linha de comando, uma opção consiste em um especificador de opção, um traço (-
) ou uma barra (/
), seguido pelo nome da opção. Os nomes de opções não podem ser abreviados. Algumas opções recebem um argumento, especificado após dois pontos (:
). Nenhum espaço ou tabulação é permitido dentro de uma especificação de opção, exceto dentro de uma cadeia de caracteres entre aspas na /COMMENT
opção. Especifique argumentos numéricos na notação decimal ou em linguagem C. Os nomes de opção e seus argumentos de palavra-chave ou nome de arquivo não diferenciam maiúsculas de minúsculas, mas identificadores como argumentos diferenciam maiúsculas de minúsculas.
Para passar um arquivo para o vinculador, especifique o nome do arquivo na linha de comando após o link.exe
comando. Você pode especificar um caminho absoluto ou relativo com o nome do arquivo e pode usar caracteres curingas no nome do arquivo. Se você omitir o ponto (.
) e a extensão do nome do arquivo, o vinculador assumirá uma extensão de .obj
para localizar o arquivo. O vinculador não usa extensões de nome de arquivo ou a falta delas para fazer suposições sobre o conteúdo dos arquivos. Ele determina o tipo de arquivo examinando-o e processando-o de acordo.
O vinculador retorna zero para êxito (sem erros). Caso contrário, ele retornará o número do erro que interrompeu o link. Por exemplo, se o vinculador gerar LNK1104
, o vinculador retornará 1104. Assim, o menor número de erros retornado em um erro pelo vinculador é 1000. Um valor retornado de 128 representa um problema de configuração com o sistema operacional ou um arquivo .config; O carregador não carregou ou link.exe
c2.dll
.
Arquivos de comando do vinculador
Você pode passar argumentos de linha de comando para link.exe
na forma de um arquivo de comando. Para especificar um arquivo de comando para o vinculador, use a seguinte sintaxe:
link @commandfile
O commandfile
é o nome de um arquivo de texto. Nenhum espaço ou tabulação é permitido entre o arroba (@) e o nome do arquivo. Não há extensão padrão; Você deve especificar o nome completo do arquivo, incluindo qualquer extensão. Curingas não podem ser usados. É possível especificar um caminho absoluto ou relativo com o nome do arquivo. O vinculador não usa uma variável de ambiente para pesquisar o arquivo.
No arquivo de comando, os argumentos são separados por espaços ou tabulações (como na linha de comando) e por caracteres de nova linha.
Você pode especificar toda ou parte da linha de comando em um arquivo de comando. Você pode usar mais de um arquivo de comando em um link.exe
comando. O vinculador aceita a entrada do arquivo de comando como se ela tivesse sido especificada nesse local na linha de comando. Os arquivos de comando não podem ser aninhados. O vinculador ecoa o conteúdo dos arquivos de comando, a menos que /NOLOGO
seja especificado.
Exemplo
O comando a seguir cria uma DLL. Ele passa os nomes de arquivos de objeto e bibliotecas em arquivos de comando separados e usa um terceiro arquivo de comando para especificação da /EXPORTS
opção:
link /dll @objlist.txt @liblist.txt @exports.txt
Variáveis de ambiente LINK
O vinculador reconhece as seguintes variáveis de ambiente:
LINK
e_LINK_
, se definido. O vinculador precede as opções e os argumentos definidos naLINK
variável de ambiente e acrescenta as opções e os argumentos definidos na_LINK_
variável de ambiente aos argumentos da linha de comando antes do processamento.LIB
, se definido. O vinculador usa oLIB
caminho quando pesquisa um objeto, biblioteca ou outro arquivo especificado na linha de comando ou pela/BASE
opção. Ele também usa oLIB
caminho para localizar um.pdb
arquivo nomeado em um objeto. ALIB
variável pode conter uma ou mais especificações de caminho, separadas por ponto-e-vírgula. Um caminho deve apontar para o\lib
subdiretório da instalação do Visual C++.PATH
, se a ferramenta precisar ser executadaCVTRES
e não conseguir encontrar o arquivo no mesmo diretório quelink.exe
ela.link.exe
(requerCVTRES
a vinculação de um.res
arquivo.)PATH
deve apontar para o\bin
subdiretório da instalação do Visual C++.TMP
, para especificar um diretório ao vincular OMF ou.res
arquivos.
Confira também
Referência de build C/C++
Opções de vinculador MSVC
Arquivos de definição de módulo (.def)
Suporte do vinculador para DLLs carregadas com atraso