Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Poznámka:
Různé příznaky linkeru přebírají název souboru. Ať už zadáte relativní cestu nebo absolutní cestu, pokud plně kvalifikovaný název souboru překročí MAX_PATH (260 znaků), může linker selhat – zejména při hledání knihoven. Pokud narazíte na tento problém, zkuste použít kratší cestu.
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.exec2.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. Nesmí překročit MAX_PATH (260 znaků). 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
Proměnné prostředí LINK
Linker rozpozná následující proměnné prostředí:
-
LINKa_LINK_, pokud jsou definovány. Linker předdefinuje možnosti a argumenty definované vLINKpromě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áLIBcestu při hledání objektu, knihovny nebo jiného souboru zadaného na příkazovém řádku nebo pomocí/BASEmožnosti. Používá takéLIBcestu k vyhledání.pdbsouboru pojmenovaného v objektu. ProměnnáLIBmůže obsahovat jednu nebo více specifikací cesty oddělené středníky. Jedna cesta musí odkazovat na\libpodadresář instalace Microsoft C++. -
PATH, pokud nástroj potřebuje spustitCVTRESa nemůže najít soubor ve stejném adresáři jakolink.exesám. (link.exevyžadujeCVTRESpropojení.ressouboru.)PATHmusí odkazovat na\binpodadresář instalace Microsoft C++. -
TMP, určit adresář při propojování OMF nebo.ressouborů.
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