O CL invoca o vinculador
O CL invocará automaticamente o vinculador após a compilação, a menos que a opção /c seja usada. CL passa para o vinculador os nomes dos arquivos .obj criados durante a compilação e os nomes de quaisquer outros arquivos especificados na linha de comando. O vinculador usa as opções listadas na variável de ambiente LINK. Você pode usar a opção /link para especificar opções de vinculador na linha de comando do CL. As opções após /link substituem as opções na variável de ambiente LINK. As opções na tabela a seguir suprimem a vinculação.
Opção | Descrição |
---|---|
/c | Compilar sem vinculação |
/E, /EP, /P | Pré-processar sem compilação ou vinculação |
/Zg | Gerar protótipos de função |
/Zs | Verificar sintaxe |
Para obter mais detalhes sobre vinculação, confira Opções do vinculador do MSVC.
Exemplo
Suponha que você esteja compilando três arquivos de origem 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
no MOD1.c e a funçãofunc2
no MOD2.c.MOD1.c chama as funções
printf_s
escanf_s
da biblioteca padrão.MOD2.c chama funções gráficas nomeadas
myline
emycircle
, que são definidas em uma biblioteca chamada MYGRAPH.lib.
Para criar esse programa, compile com a seguinte linha de comando:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
CL primeiro compila os arquivos de origem 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, confira Usar biblioteca de runtime.
CL passa os nomes dos arquivos .obj, juntamente com o nome MYGRAPH.lib, para o vinculador. O vinculador resolve as referências externas da seguinte maneira:
Em MAIN.obj, a referência a
func1
é resolvida usando a definição em MOD1.obj; a referência afunc2
é resolvida usando a definição em MOD2.obj.Em MOD1.obj, as referências a
printf_s
escanf_s
são resolvidas usando as definições na biblioteca que o vinculador encontra nomeadas em MOD1.obj.Em MOD2.obj, as referências a
myline
emycircle
são resolvidas usando as definições em MYGRAPH.lib.