CL invoca o vinculador
CL automaticamente invoca o vinculador após a compilação, a menos que a opção /c é usada.CL passa para o vinculador, os nomes dos arquivos. obj, criados durante a compilação e os nomes de todos os outros arquivos especificados na linha de comando.O vinculador usa as opções listadas na variável de ambiente do LINK.Você pode usar a opção /link para especificar as opções de vinculador na linha de comando CL.Opções que seguem a opção /link substituirão as a variável de ambiente do LINK.As opções na tabela a seguir suprimir a vinculação.
Opção |
Descrição |
---|---|
/c |
Compilar sem vinculação |
/ /P E, /EP, |
Pré-processo sem compilar ou vincular |
/ZG |
Gerar protótipos de função |
/ZS |
Verifique a sintaxe |
Para obter mais detalhes sobre como vincular, consulte Opções do vinculador.
Exemplo
Suponha que você está compilando os arquivos de origem de três C: MAIN.c, MOD1.c e MOD2.c.Cada arquivo inclui uma chamada para uma função definida em um arquivo diferente:
Main.c chama a função func1 na MOD1.c e a função func2 em MOD2.c.
MOD1.c chama as funções de biblioteca padrão printf_s e scanf_s.
MOD2.c chamadas de funções de gráficos chamadas myline e mycircle, que são definidos em uma biblioteca denominada MYGRAPH.lib.
Para criar este programa, compile com a seguinte linha de comando:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
Primeiro, CL compila os arquivos de código-fonte c e cria os arquivos de objeto MAIN.obj, MOD1.obj e MOD2.obj.O compilador coloca o nome da biblioteca padrão em cada arquivo. obj.Para obter mais detalhes, consulte Biblioteca de tempo de execução de uso.
CL passa os nomes dos arquivos. obj, juntamente com o nome MYGRAPH.lib, para o vinculador.O vinculador resolve as referências externas, como segue:
No MAIN.obj, a referência a func1 for resolvido usando a definição em MOD1.obj; a referência a func2 for resolvido usando a definição em MOD2.obj.
No MOD1.obj, as referências a printf_s e scanf_s são resolvidos usando as definições na biblioteca que o vinculador localiza denominada dentro de MOD1.obj.
No MOD2.obj, as referências a myline e mycircle são resolvidos usando as definições no MYGRAPH.lib.