CL wywołuje konsolidator
CL automatycznie wywołuje program łączący po kompilacji, jeśli nie jest używana opcja/c.CL przekazuje do linker nazwy plików obj. tworzony podczas kompilowania i nazwy innych plików określonego w wierszu polecenia.Program łączący korzysta z opcji wymienionych w zmiennej środowiskowej łącze.Opcja /link do określania opcji linker w wierszu polecenia CL.Opcje, które następują opcją /link zastępują w zmiennej środowiskowej łącze.Opcje w poniższej tabeli odrzuca połączenie.
Opcja |
Opis |
---|---|
/c |
Kompiluj bez łączenia |
/ /P E, /EP, |
Przetwarzanie wstępne bez kompilowania i łączenia |
/Zg |
Generowanie prototypów funkcji |
/Zs |
Sprawdzanie składni |
Aby uzyskać więcej informacji na temat łączenia, zobacz Opcje Linker.
Przykład
Załóżmy, że kompilacja C trzy pliki źródłowe: MAIN.c, MOD1.c i MOD2.c.Każdy plik zawiera wywołanie funkcji zdefiniowane w innym pliku:
MAIN.c wywołuje funkcję func1 w MOD1.c i funkcja func2 w MOD2.c.
MOD1.c wywołuje funkcje biblioteki standardowej printf_s i scanf_s.
MOD2.c wywołuje funkcje grafiki o nazwie myline i mycircle, które są zdefiniowane w bibliotece o nazwie MYGRAPH.lib.
Aby skompilować ten program, kompilacji z następującego wiersza polecenia:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
Najpierw CL kompiluje pliki źródłowe C i tworzy pliki obiektu, MAIN.obj, MOD1.obj i MOD2.obj.Kompilator umieszcza nazwę biblioteki standardowej w każdym pliku .obj.Aby uzyskać bardziej szczegółowe informacje, zobacz Wykorzystania Run-Time Library.
CL przekazuje nazwy plików .obj, wraz z nazwą MYGRAPH.lib, program łączący.Program łączący usuwa odwołania zewnętrzne w następujący sposób:
W MAIN.obj, odniesienie do func1 został rozwiązany za pomocą definicji w MOD1.obj; odniesienie do func2 został rozwiązany za pomocą definicji w MOD2.obj.
W MOD1.obj, odniesienia do printf_s i scanf_s są rozwiązywane przy użyciu definicje w bibliotekę, w której znajduje się program łączący o nazwie w MOD1.obj.
W MOD2.obj, odniesienia do myline i mycircle są rozwiązywane przy użyciu definicje w MYGRAPH.lib.