Łączenie
W projekcie języka C++ krok łączenia jest wykonywany po skompilowaniu kodu źródłowego do plików obiektów (*.obj). Konsolidator (link.exe
) łączy pliki obiektów w jeden plik wykonywalny.
Opcje konsolidatora można ustawić wewnątrz programu Visual Studio lub poza nim. W programie Visual Studio uzyskujesz dostęp do opcji konsolidatora, klikając prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań i wybierając polecenie Właściwości, aby wyświetlić strony właściwości. Wybierz pozycję Konsolidator w okienku po lewej stronie, aby rozwinąć węzeł i wyświetlić wszystkie opcje.
Składnia wiersza polecenia konsolidatora
Po uruchomieniu konsolidatora poza programem Visual Studio można określić dane wejściowe na co najmniej jeden sposób:
- W wierszu polecenia
- Używanie plików poleceń
- W zmiennych środowiskowych
Konsolidator najpierw przetwarza opcje określone w zmiennej LINK
środowiskowej, a następnie opcje w kolejności, w której są określone w wierszu polecenia i w plikach poleceń. Jeśli opcja jest powtarzana z różnymi argumentami, ostatni przetworzony ma pierwszeństwo.
Opcje mają zastosowanie do całej kompilacji; nie można zastosować żadnych opcji do określonych plików wejściowych.
Aby uruchomić link.exe
polecenie , użyj następującej składni polecenia:
link arguments
Opcje arguments
dołączania i nazwy plików można określić w dowolnej kolejności. Opcje są przetwarzane najpierw, a następnie pliki. Użyj co najmniej jednej spacji lub karty, aby oddzielić argumenty.
Uwaga
To narzędzie można uruchomić tylko w wierszu polecenia programu Visual Studio. Nie można go uruchomić z poziomu wiersza polecenia systemu lub z Eksplorator plików.
Wiersz polecenia
W wierszu polecenia opcja składa się z specyfikatora opcji, kreski (-
) lub ukośnika (/
), a następnie nazwy opcji. Nie można skrócić nazw opcji. Niektóre opcje przyjmują argument określony po dwukropku (:
). W ramach specyfikacji opcji nie są dozwolone spacje ani tabulatory, z wyjątkiem ciągu cytowanego w /COMMENT
opcji. Określ argumenty liczbowe w notacji dziesiętnej lub języka C. Nazwy opcji i ich argumenty słowa kluczowego lub nazwy pliku nie są uwzględniane wielkości liter, ale identyfikatory jako argumenty są uwzględniane wielkości liter.
Aby przekazać plik do konsolidatora, określ nazwę pliku w wierszu polecenia po poleceniu link.exe
. Możesz określić ścieżkę bezwzględną lub względną z nazwą pliku i użyć symboli wieloznacznych w nazwie pliku. Jeśli pominięto rozszerzenie kropki (.
) i nazwy pliku, konsolidator zakłada rozszerzenie .obj
w celu znalezienia pliku. Konsolidator nie używa rozszerzeń nazw plików ani ich braku do założeń dotyczących zawartości plików. Określa typ pliku, sprawdzając go i odpowiednio przetwarza.
Konsolidator zwraca zero dla powodzenia (bez błędów). W przeciwnym razie zwraca numer błędu, który zatrzymał łącze. Jeśli na przykład konsolidator generuje LNK1104
, konsolidator zwraca wartość 1104. W związku z tym najniższa liczba błędów zwrócona w przypadku błędu przez konsolidator wynosi 1000. Wartość zwracana 128 reprezentuje problem z konfiguracją systemu operacyjnego lub pliku config; moduł ładujący nie załadował link.exe
pliku lub c2.dll
.
Pliki poleceń konsolidatora
Argumenty wiersza polecenia można przekazać do link.exe
w postaci pliku polecenia. Aby określić plik polecenia konsolidatora, użyj następującej składni:
link @commandfile
Jest commandfile
to nazwa pliku tekstowego. Odstęp lub karta nie jest dozwolona między znakiem (@) i nazwą pliku. Brak rozszerzenia domyślnego; Musisz określić pełną nazwę pliku, w tym dowolne rozszerzenie. Nie można używać symboli wieloznacznych. Możesz określić ścieżkę bezwzględną lub względną z nazwą pliku. Konsolidator nie używa zmiennej środowiskowej do wyszukiwania pliku.
W pliku poleceń argumenty są oddzielone spacjami lub tabulatorami (jak w wierszu polecenia) i znakami nowego wiersza polecenia.
Możesz określić wszystkie lub część wiersza polecenia w pliku polecenia. W poleceniu link.exe
można użyć więcej niż jednego pliku polecenia. Konsolidator akceptuje dane wejściowe pliku polecenia tak, jakby został określony w tej lokalizacji w wierszu polecenia. Nie można zagnieżdżać plików poleceń. Konsolidator odzwierciedla zawartość plików poleceń, chyba że /NOLOGO
zostanie określona.
Przykład
Następujące polecenie kompiluje bibliotekę DLL. Przekazuje nazwy plików obiektów i bibliotek w oddzielnych plikach poleceń i używa trzeciego pliku poleceń do specyfikacji /EXPORTS
opcji:
link /dll @objlist.txt @liblist.txt @exports.txt
Zmienne środowiskowe LINK
Konsolidator rozpoznaje następujące zmienne środowiskowe:
LINK
i_LINK_
, jeśli zdefiniowano. Konsolidator poprzedza opcje i argumenty zdefiniowane wLINK
zmiennej środowiskowej i dołącza opcje i argumenty zdefiniowane w_LINK_
zmiennej środowiskowej do argumentów wiersza polecenia przed przetworzeniem.LIB
, jeśli jest zdefiniowana. Konsolidator używa ścieżkiLIB
podczas wyszukiwania obiektu, biblioteki lub innego pliku określonego w wierszu polecenia lub przez/BASE
opcję. Używa również ścieżkiLIB
do znalezienia.pdb
pliku o nazwie w obiekcie. ZmiennaLIB
może zawierać co najmniej jedną specyfikację ścieżki rozdzieloną średnikami. Jedna ścieżka musi wskazywać\lib
podkatalog instalacji programu Visual C++.PATH
, jeśli narzędzie musi zostać uruchomioneCVTRES
i nie może znaleźć pliku w tym samym katalogu colink.exe
sam. (link.exe
wymagaCVTRES
połączenia.res
pliku).)PATH
musi wskazywać\bin
podkatalog instalacji programu Visual C++.TMP
, aby określić katalog podczas łączenia plików OMF lub.res
plików.
Zobacz też
Dokumentacja kompilacji w języku C/C++
Opcje konsolidatora MSVC
Pliki definicji modułu (.def)
Obsługa konsolidatora dla bibliotek DLL załadowanych z opóźnieniem