Partilhar via


Linking

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ó do projeto no Gerenciador de Soluções e escolhendo Propriedades para exibir as páginas de propriedades. Escolha Vinculador no painel esquerdo para expandir o nó e ver todas as opções.

Sintaxe da 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 opção processada terá precedência.

As opções aplicam-se a toda a compilação; Nenhuma opção pode ser aplicada a arquivos de entrada específicos.

Para executar link.exeo , use a seguinte sintaxe de comando:

link arguments

As arguments opções de inclusão e nomes de arquivo 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 guias para separar argumentos.

Observação

Você pode iniciar essa ferramenta somente no prompt de comando do Visual Studio. Não é possível iniciá-lo a partir de um prompt de comando do sistema ou do Explorador de Arquivos.

Linha de comandos

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 das opções não podem ser abreviados. Algumas opções usam 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 em notação decimal ou em linguagem C. Os nomes das opções e seus argumentos de palavra-chave ou nome de arquivo não diferenciam maiúsculas de minúsculas, mas os 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 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. Determina o tipo de ficheiro examinando-o e processa-o em conformidade.

Observação

Vários sinalizadores de vinculador usam um nome de arquivo. Se você especificar um caminho relativo ou um caminho absoluto, se o nome de arquivo totalmente qualificado exceder MAX_PATH (260 caracteres), o vinculador poderá falhar, especialmente durante a pesquisa de bibliotecas. Se você encontrar esse problema, tente usar um caminho mais curto.

O vinculador retorna zero para êxito (sem erros). Caso contrário, ele retorna 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 erro 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. Não é permitido espaço ou tabulação entre o sinal de 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. Você pode especificar um caminho absoluto ou relativo com o nome do arquivo. Não deve exceder MAX_PATH (260 caracteres). 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 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.

Example

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 LINK variável de ambiente e acrescenta as opções e argumentos definidos na _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 .pdb arquivo nomeado em um 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 Microsoft C++.
  • PATH, se a ferramenta precisar ser executada CVTRES e não conseguir encontrar 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 de sua instalação do Microsoft C++.
  • TMP, para especificar um diretório ao vincular OMF ou .res arquivos.

Consulte também

Referência de construção C/C++
Opções do vinculador MSVC
ArquivosModule-Definition (.def)
Suporte de vinculador para Delay-Loaded DLLs