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

Quando você executa 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.exeo , 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 usam um argumento, especificado após dois pontos (:). Nenhum espaço ou guia é 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 processa-o de acordo.

O vinculador retorna zero para êxito (sem erros). Caso contrário, ele retorna o número de erro que parou 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 de retorno de 128 representa um problema de configuração com o sistema operacional ou um arquivo .config; o carregador não carregou nem link.exec2.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 do arquivo completo, 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 procurar o arquivo.

No arquivo de comando, os argumentos são separados por espaços ou guias (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 fosse 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

O vinculador reconhece as seguintes variáveis de ambiente:

  • LINK e _LINK_, se definido. O vinculador precede as opções e argumentos definidos na variável de ambiente e acrescenta as opções e argumentos definidos na LINK_LINK_ variável de ambiente aos argumentos de linha de comando antes do processamento.
  • LIB, se definido. O vinculador usa o LIB caminho quando procura um objeto, biblioteca ou outro arquivo especificado na linha de comando ou pela /BASE opção. Ele também usa o LIB caminho para localizar um arquivo nomeado em um .pdb objeto. A LIB 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 executada CVTRES e não conseguir localizar o arquivo no mesmo diretório que link.exe ela. link.exe( requer CVTRES vincular 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