Sdílet prostřednictvím


Propojení

V projektu C++ se krok propojování provádí po kompilaci zdrojového kódu do objektů souborů (*.obj). Linker (link.exe) kombinuje soubory objektů do jednoho spustitelného souboru.

Možnosti linkeru je možné nastavit uvnitř nebo mimo sadu Visual Studio. V sadě Visual Studio získáte přístup k možnostem linkeru tak, že kliknete pravým tlačítkem na uzel projektu v Průzkumník řešení a zvolíte Vlastnosti, aby se zobrazily stránky vlastností. V levém podokně zvolte Linker a rozbalte uzel a zobrazte všechny možnosti.

Syntaxe příkazového řádku linkeru

Při spuštění linkeru mimo Visual Studio můžete zadat vstup jedním nebo několika způsoby:

  • Na příkazovém řádku
  • Použití souborů příkazů
  • V proměnných prostředí

Linker nejprve zpracuje možnosti zadané v LINK proměnné prostředí a potom možnosti v pořadí, v jakém jsou zadané na příkazovém řádku a v souborech příkazů. Pokud se možnost opakuje s různými argumenty, má přednost poslední zpracovaná možnost.

Možnosti platí pro celé sestavení; u konkrétních vstupních souborů nelze použít žádné možnosti.

Ke spuštění link.exepoužijte následující syntaxi příkazu:

link arguments

Zahrnout arguments možnosti a názvy souborů a lze je zadat v libovolném pořadí. Nejprve se zpracovávají možnosti a pak soubory. K oddělení argumentů použijte jednu nebo více mezer nebo tabulátoru.

Poznámka:

Tento nástroj můžete spustit pouze z příkazového řádku sady Visual Studio. Nemůžete ho spustit z příkazového řádku systému ani z Průzkumník souborů.

Příkazový řádek

Na příkazovém řádku se možnost skládá ze specifikátoru možnosti, pomlčky (-) nebo lomítka (/) následovaného názvem možnosti. Názvy možností nelze zkrátit. Některé možnosti přebírají argument zadaný za dvojtečku (:). Ve specifikaci možnosti nejsou povoleny žádné mezery ani tabulátory, s výjimkou řetězce v uvozvozování v této /COMMENT možnosti. Zadejte číselné argumenty v desítkovém zápisu nebo zápisu jazyka C. Názvy možností a jejich argumenty klíčového slova nebo názvu souboru nerozlišují velká a malá písmena, ale identifikátory jako argumenty rozlišují malá a velká písmena.

Pokud chcete předat soubor do linkeru, zadejte název souboru na příkazovém řádku za příkazem link.exe . Můžete zadat absolutní nebo relativní cestu s názvem souboru a v názvu souboru můžete použít zástupné cardy. Pokud vynecháte tečku (.) a příponu souboru, linker předpokládá příponu .obj k nalezení souboru. Linker nepoužívá přípony souborů ani jejich nedostatek k předpokladům o obsahu souborů. Určuje typ souboru tím, že ho prozkoumá a odpovídajícím způsobem zpracuje.

Linker vrátí nulu pro úspěch (žádné chyby). V opačném případě vrátí číslo chyby, která propojení zastavila. Pokud například linker vygeneruje LNK1104, vrátí linker hodnotu 1104. Proto nejnižší číslo chyby vrácené linkerem je 1 000. Návratová hodnota 128 představuje problém s konfigurací operačního systému nebo souboru .config; zavaděč nenačetl ani link.exe c2.dll.

Soubory příkazů linkeru

Argumenty link.exe příkazového řádku můžete předat ve formě souboru příkazu. Pokud chcete zadat soubor příkazu do linkeru, použijte následující syntaxi:

link @commandfile

Jedná se commandfile o název textového souboru. Mezi znakem at (@) a názvem souboru není povoleno žádné mezery ani tabulátor. Neexistuje žádné výchozí rozšíření; musíte zadat úplný název souboru včetně libovolné přípony. Zástupné cardy nelze použít. Pomocí názvu souboru můžete zadat absolutní nebo relativní cestu. Linker k vyhledání souboru nepoužívá proměnnou prostředí.

V souboru příkazu jsou argumenty oddělené mezerami nebo tabulátory (jako na příkazovém řádku) a znaky nového řádku.

V příkazovém řádku můžete zadat celý příkazový řádek nebo jeho část. V příkazu můžete použít více než jeden soubor link.exe příkazu. Linker přijímá vstup příkazového souboru, jako by byl zadán v tomto umístění na příkazovém řádku. Soubory příkazů nelze vnořit. Linker vypíše obsah souborů příkazů, pokud /NOLOGO není zadán.

Příklad

Následující příkaz vytvoří knihovnu DLL. Předává názvy souborů objektů a knihoven v samostatných souborech příkazů a pro specifikaci /EXPORTS této možnosti používá třetí příkazový soubor:

link /dll @objlist.txt @liblist.txt @exports.txt

Linker rozpozná následující proměnné prostředí:

  • LINK a _LINK_, pokud jsou definovány. Linker předdefinuje možnosti a argumenty definované v LINK proměnné prostředí a před zpracováním připojí možnosti a argumenty definované v _LINK_ proměnné prostředí k argumentům příkazového řádku.
  • LIB, pokud je definováno. Linker používá LIB cestu při hledání objektu, knihovny nebo jiného souboru zadaného na příkazovém řádku nebo pomocí /BASE možnosti. Používá také LIB cestu k vyhledání .pdb souboru pojmenovaného v objektu. Proměnná LIB může obsahovat jednu nebo více specifikací cesty oddělené středníky. Jedna cesta musí odkazovat na \lib podadresář instalace Visual C++.
  • PATH, pokud nástroj potřebuje spustit CVTRES a nemůže najít soubor ve stejném adresáři jako link.exe sám. (link.exe vyžaduje CVTRES propojení .res souboru.) PATH musí odkazovat na \bin podadresář instalace Visual C++.
  • TMP, určit adresář při propojování OMF nebo .res souborů.

Viz také

Referenční zdroje k sestavení programu v jazyce C/C++
Možnosti linkeru MSVC
Soubory definice modulu (.def)
Podpora linkeru pro knihovny DLL s odloženým načtením