VerknüpfenLinking

In einem C++-Projekt wird der Verknüpfungs Schritt ausgeführt, nachdem der Compiler den Quellcode in Objektdateien (*. obj) kompiliert hat.In a C++ project, the linking step is performed after the compiler has compiled the source code into object files (*.obj). Der Linker (link.exe) kombiniert die Objektdateien in einer einzelnen ausführbaren Datei.The linker (link.exe) combines the object files into a single executable file.

Linkeroptionen können innerhalb von Visual Studio oder außerhalb von Visual Studio festgelegt werden.Linker options can be set inside or outside of Visual Studio. In Visual Studio greifen Sie auf die Linkeroptionen zu, indem Sie in Projektmappen-Explorer mit der rechten Maustaste auf einen Projekt Knoten klicken und Eigenschaften auswählen, um die Eigenschaften Seiten anzuzeigen.Within Visual Studio, you access linker options by right-clicking on a project node in Solution Explorer and choosing Properties to display the property pages. Wählen Sie im linken Bereich Linker aus, um den Knoten zu erweitern und alle Optionen anzuzeigen.Choose Linker in the left pane to expand the node and see all the options.

Linker-Befehlszeilen SyntaxLinker command-line syntax

Wenn Sie einen Link außerhalb von Visual Studio ausführen, können Sie die Eingabe auf eine oder mehrere Arten angeben:When you run LINK outside of Visual Studio, you can specify input in one or more ways:

  • Über die BefehlszeileOn the command line

  • Verwenden von Befehls DateienUsing command files

  • In UmgebungsvariablenIn environment variables

Verknüpfen Sie zuerst die in der Link-Umgebungsvariablen angegebenen Optionen, gefolgt von den Optionen in der Reihenfolge, in der Sie in der Befehlszeile und in den Befehls Dateien angegeben sind.LINK first processes options specified in the LINK environment variable, followed by options in the order they are specified on the command line and in command files. Wenn eine Option mit unterschiedlichen Argumenten wiederholt wird, hat die letzte verarbeitete Priorität Vorrang.If an option is repeated with different arguments, the last one processed takes precedence.

Optionen gelten für den gesamten Build. Es können keine Optionen auf bestimmte Eingabedateien angewendet werden.Options apply to the entire build; no options can be applied to specific input files.

Verwenden Sie zum Ausführen von LINK.EXE die folgende Befehlssyntax:To run LINK.EXE, use the following command syntax:

LINK arguments

Die arguments include-Optionen und-Dateinamen und können in beliebiger Reihenfolge angegeben werden.The arguments include options and filenames and can be specified in any order. Die Optionen werden zuerst verarbeitet, dann Dateien.Options are processed first, then files. Verwenden Sie ein oder mehrere Leerzeichen oder Registerkarten, um Argumente zu trennen.Use one or more spaces or tabs to separate arguments.

Hinweis

Sie können dieses Tool nur über die Visual Studio-Eingabeaufforderung starten.You can start this tool only from the Visual Studio command prompt. Sie können es nicht von einer Systemeingabeaufforderung oder vom Datei-Explorer aus starten.You cannot start it from a system command prompt or from File Explorer.

BefehlszeileCommand line

In der Befehlszeile besteht eine Option aus einem optionsspezifizierer, entweder einem Bindestrich (-) oder einem Schrägstrich (/), gefolgt vom Namen der Option.On the command line, an option consists of an option specifier, either a dash (-) or a forward slash (/), followed by the name of the option. Optionsnamen können nicht abgekürzt werden.Option names cannot be abbreviated. Einige Optionen akzeptieren ein Argument, das nach einem Doppelpunkt (:) angegeben wird.Some options take an argument, specified after a colon (:). In einer Options Spezifikation sind keine Leerzeichen oder Tabstopps zulässig, außer in einer Zeichenfolge in Anführungszeichen in der/Comment-Option.No spaces or tabs are allowed within an option specification, except within a quoted string in the /COMMENT option. Geben Sie numerische Argumente in Dezimal-oder C-Sprachen-Notation an.Specify numeric arguments in decimal or C-language notation. Bei Optionsnamen und deren Schlüsselwort-oder Dateinamen Argumenten wird die Groß-/Kleinschreibung nicht beachtetOption names and their keyword or filename arguments are not case sensitive, but identifiers as arguments are case sensitive.

Wenn Sie eine Datei an den Linker übergeben möchten, geben Sie den Dateinamen in der Befehlszeile nach dem Link Befehl an.To pass a file to the linker, specify the filename on the command line after the LINK command. Sie können einen absoluten oder relativen Pfad mit dem Dateinamen angeben, und Sie können Platzhalter im Dateinamen verwenden.You can specify an absolute or relative path with the filename, and you can use wildcards in the filename. Wenn Sie die Punkt-(.) und Dateinamenerweiterung weglassen, wird von Link angenommen. obj für den Zweck der Suche nach der Datei.If you omit the dot (.) and filename extension, LINK assumes .obj for the purpose of finding the file. Der Link verwendet keine Dateinamen Erweiterungen oder nicht, um Annahmen über den Inhalt von Dateien zu treffen. der Typ der Datei wird durch die Untersuchung bestimmt und entsprechend verarbeitet.LINK does not use filename extensions or the lack of them to make assumptions about the contents of files; it determines the type of file by examining it, and processes it accordingly.

link.exe gibt bei Erfolg 0 (null) zurück.link.exe returns zero for success (no errors). Andernfalls gibt der Linker die Fehlernummer zurück, die den Link beendet hat.Otherwise, the linker returns the error number that stopped the link. Wenn der Linker z. b. LNK1104 generiert, gibt der Linker 1104 zurück.For example, if the linker generates LNK1104, the linker returns 1104. Entsprechend ist die niedrigste Fehlernummer, die bei einem Fehler vom Linker zurückgegeben wird, 1000.Accordingly, the lowest error number returned on an error by the linker is 1000. Der Rückgabewert 128 stellt ein Konfigurationsproblem mit dem Betriebssystem oder einer config-Datei dar. das Lade Modul hat weder link.exe noch c2.dll geladen.A return value of 128 represents a configuration problem with either the operating system or a .config file; the loader didn't load either link.exe or c2.dll.

Sie können Befehlszeilenargumente übergeben, um Sie in Form einer Befehlsdatei zu verknüpfen.You can pass command-line arguments to LINK in the form of a command file. Verwenden Sie die folgende Syntax, um eine Befehlsdatei für den Linker anzugeben:To specify a command file to the linker, use the following syntax:

Link @ BefehlsdateiLINK @commandfile

Die Befehlsdatei ist der Name einer Textdatei.The commandfile is the name of a text file. Zwischen dem @-Zeichen ( @ ) und dem Dateinamen darf kein Leerzeichen oder Tabstopp Zeichen stehen.No space or tab is allowed between the at sign (@) and the filename. Es ist keine Standard Erweiterung vorhanden. Sie müssen den vollständigen Dateinamen angeben, einschließlich einer beliebigen Erweiterung.There is no default extension; you must specify the full filename, including any extension. Platzhalter können nicht verwendet werden.Wildcards cannot be used. Sie können einen absoluten oder relativen Pfad mit dem Dateinamen angeben.You can specify an absolute or relative path with the filename. Der Link verwendet keine Umgebungsvariable, um nach der Datei zu suchen.LINK does not use an environment variable to search for the file.

In der Befehlsdatei können Argumente durch Leerzeichen oder Tabstopps (wie in der Befehlszeile) und durch Zeilen vorzeilenzeichen getrennt werden.In the command file, arguments can be separated by spaces or tabs (as on the command line) and by newline characters.

Sie können die Befehlszeile ganz oder teilweise in einer Befehlsdatei angeben.You can specify all or part of the command line in a command file. Sie können mehr als eine Befehlsdatei in einem Link Befehl verwenden.You can use more than one command file in a LINK command. Link akzeptiert die Befehlsdatei Eingabe so, als ob Sie an dieser Stelle in der Befehlszeile angegeben wurde.LINK accepts the command-file input as if it were specified in that location on the command line. Befehls Dateien können nicht eingefügt werden.Command files cannot be nested. Link gibt den Inhalt von Befehls Dateien an, es sei denn, die /nologo -Option wurde angegeben.LINK echoes the contents of command files, unless the /NOLOGO option is specified.

BeispielExample

Der folgende Befehl zum Erstellen einer DLL übergibt die Namen von Objektdateien und Bibliotheken in separaten Befehls Dateien und verwendet eine dritte Befehlsdatei zur Angabe der/Exports-Option:The following command to build a DLL passes the names of object files and libraries in separate command files and uses a third command file for specification of the /EXPORTS option:

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

Das LINK-Tool verwendet die folgenden Umgebungsvariablen:The LINK tool uses the following environment variables:

  • Link und _ Link _ , falls definiert.LINK and _LINK_, if defined. Das Link Tool fügt die in der Link-Umgebungsvariablen definierten Optionen und Argumente voran und fügt die in der Link-Umgebungsvariablen definierten Optionen und Argumente _ _ vor der Verarbeitung an die Befehlszeilenargumente an.The LINK tool prepends the options and arguments defined in the LINK environment variable and appends the options and arguments defined in the _LINK_ environment variable to the command line arguments before processing.

  • LIB, falls definiert.LIB, if defined. Die Linktools verwenden den LIB-Pfad bei der Suche nach einem Objekt, einer Bibliothek oder einer anderen Datei, die in der Befehlszeile oder der /Base -Option angegeben ist.The LINK tools uses the LIB path when searching for an object, library, or other file specified on the command line or by the /BASE option. Der LIB-Pfad wird auch verwendet, um nach einer in einem Objekt genannten PDB-Datei zu suchen.It also uses the LIB path to find a .pdb file named in an object. Die LIB-Variable kann mehrere durch Semikolons getrennte Pfadangaben enthalten.The LIB variable can contain one or more path specifications, separated by semicolons. Ein Pfad muss auf das Unterverzeichnis \lib der Visual C++-Installation zeigen.One path must point to the \lib subdirectory of your Visual C++ installation.

  • PATH, wenn das Tool CVTRES ausführen muss und die Datei nicht im selben Verzeichnis wie LINK findet.PATH, if the tool needs to run CVTRES and cannot find the file in the same directory as LINK itself. (Link erfordert CVTRES, um eine RES-Datei zu verknüpfen.) Der Pfad muss auf das Unterverzeichnis "\bin" der Visual C++ Installation zeigen.(LINK requires CVTRES to link a .res file.) PATH must point to the \bin subdirectory of your Visual C++ installation.

  • TMP zum Angeben eines Verzeichnisses beim Verknüpfen von OMF oder RES-DateienTMP, to specify a directory when linking OMF or .res files.

Siehe auchSee also

Referenz zur C/C++-Referenz MSVC (Linkeroptionen ) Modul Definitions Dateien (. def) Linker-Unterstützung für Delay-Loaded DLLsC/C++ Building Reference MSVC Linker Options Module-Definition (.def) Files Linker Support for Delay-Loaded DLLs