LiaisonLinking

Dans un projet C++, le liaison étape est effectuée une fois que le compilateur a compilé le code source dans des fichiers objet (*.obj).In a C++ project, the linking step is performed after the compiler has compiled the source code into object files (*.obj). L’éditeur de liens (link.exe) combine les fichiers objets en un seul fichier exécutable.The linker (link.exe) combines the object files into a single executable file.

Options de l’éditeur de liens peuvent être définies à l’intérieur ou en dehors de Visual Studio.Linker options can be set inside or outside of Visual Studio. Dans Visual Studio, vous accédez aux options de l’éditeur de liens en cliquant sur un nœud de projet dans l’Explorateur de solutions et en choisissant propriétés pour afficher les pages de propriétés.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. Choisissez l’éditeur de liens dans le volet gauche, développez le nœud et de voir toutes les options.Choose Linker in the left pane to expand the node and see all the options.

Syntaxe de ligne de commande de l’éditeur de liensLinker command-line syntax

Lorsque vous exécutez le lien en dehors de Visual Studio, vous pouvez spécifier l’entrée dans une ou plusieurs façons :When you run LINK outside of Visual Studio, you can specify input in one or more ways:

  • Sur la ligne de commandeOn the command line

  • À l’aide de fichiers de commandesUsing command files

  • Dans les variables d’environnementIn environment variables

Options de processus premier lien spécifié dans la variable d’environnement LINK, suivi d’options dans l’ordre, elles sont spécifiées sur la ligne de commande et dans les fichiers de commandes.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. Si une option est répétée avec différents arguments, le dernier traité est prioritaire.If an option is repeated with different arguments, the last one processed takes precedence.

Options s’appliquent à la génération complète ; Aucun options ne peuvent être appliquées à des fichiers d’entrée spécifiques.Options apply to the entire build; no options can be applied to specific input files.

Pour exécuter le lien. EXE, utilisez la syntaxe de commande suivante :To run LINK.EXE, use the following command syntax:

LINK arguments

Le arguments incluent des options et des noms de fichiers et peuvent être spécifiés dans n’importe quel ordre.The arguments include options and filenames and can be specified in any order. Les options sont traitées en premier, puis les fichiers.Options are processed first, then files. Utiliser un ou plusieurs espaces ou des tabulations pour séparer les arguments.Use one or more spaces or tabs to separate arguments.

Notes

Vous pouvez démarrer cet outil uniquement à partir de l’invite de commandes de Visual Studio.You can start this tool only from the Visual Studio command prompt. Vous ne pouvez pas le démarrer à partir d'une invite de commandes système ni de l'Explorateur de fichiers.You cannot start it from a system command prompt or from File Explorer.

Ligne de commandeCommand line

Sur la ligne de commande, une option est constituée d’un spécificateur d’option, un tiret (-) ou une barre oblique (/), suivi du nom de l’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. Noms d’options ne peuvent pas être abrégés.Option names cannot be abbreviated. Certaines options acceptent un argument spécifié après le signe deux-points ( :)).Some options take an argument, specified after a colon (:). Aucun espace ni les onglets ne sont autorisés dans une spécification d’option, à l’exception dans une chaîne entre guillemets dans l’option/comment.No spaces or tabs are allowed within an option specification, except within a quoted string in the /COMMENT option. Spécifiez les arguments numériques en notation décimale ou en langage C.Specify numeric arguments in decimal or C-language notation. Les noms des options et leurs arguments de mot clé ou le nom de fichier ne sont pas sensible à la casse, mais les identificateurs en tant qu’arguments respectent la casse.Option names and their keyword or filename arguments are not case sensitive, but identifiers as arguments are case sensitive.

Pour transmettre un fichier à l’éditeur de liens, spécifiez le nom de fichier sur la ligne de commande après la commande de lien.To pass a file to the linker, specify the filename on the command line after the LINK command. Vous pouvez spécifier un chemin d’accès absolu ou relatif avec le nom de fichier, et vous pouvez utiliser des caractères génériques dans le nom de fichier.You can specify an absolute or relative path with the filename, and you can use wildcards in the filename. Si vous omettez le point (.) et l’extension de nom de fichier, le lien suppose .obj pour rechercher le fichier.If you omit the dot (.) and filename extension, LINK assumes .obj for the purpose of finding the file. LIEN n’utilise pas les extensions de nom de fichier ou l’absence d’eux pour émettre des hypothèses sur le contenu des fichiers ; Il détermine le type de fichier en examinant l’il et le traite en conséquence.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 retourne zéro pour la réussite (aucune erreur).link.exe returns zero for success (no errors). Sinon, l’éditeur de liens retourne le numéro d’erreur qui a interrompu le lien.Otherwise, the linker returns the error number that stopped the link. Par exemple, si l’éditeur de liens génère LNK1104, l’éditeur de liens retourne 1104.For example, if the linker generates LNK1104, the linker returns 1104. En conséquence, le plus petit numéro d’erreur renvoyé en cas d’erreur par l’éditeur de liens est 1000.Accordingly, the lowest error number returned on an error by the linker is 1000. Une valeur de retour de 128 représente un problème de configuration avec le système d’exploitation ou un fichier .config ; le chargeur n’a pas chargé link.exe ou c2.dll.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.

Vous pouvez passer des arguments de ligne de commande pour le lien sous la forme d’un fichier de commandes.You can pass command-line arguments to LINK in the form of a command file. Pour spécifier un fichier de commandes pour l’éditeur de liens, utilisez la syntaxe suivante :To specify a command file to the linker, use the following syntax:

LIEN @ /commandfileLINK @commandfile

Le /commandfile est le nom d’un fichier texte.The commandfile is the name of a text file. Aucun espace ou un onglet n’est autorisé entre le signe arobase (@) et le nom de fichier.No space or tab is allowed between the at sign (@) and the filename. Il n’existe aucune extension par défaut ; Vous devez spécifier le nom de fichier complet, y compris de n’importe quelle extension.There is no default extension; you must specify the full filename, including any extension. Impossible d’utiliser des caractères génériques.Wildcards cannot be used. Vous pouvez spécifier un chemin d’accès absolu ou relatif avec le nom de fichier.You can specify an absolute or relative path with the filename. LIEN n’utilise pas une variable d’environnement pour rechercher le fichier.LINK does not use an environment variable to search for the file.

Dans le fichier de commandes, les arguments peuvent être séparés par des espaces ou des tabulations (comme sur la ligne de commande) et par les caractères de saut de ligne.In the command file, arguments can be separated by spaces or tabs (as on the command line) and by newline characters.

Vous pouvez spécifier tout ou partie de la ligne de commande dans un fichier de commandes.You can specify all or part of the command line in a command file. Vous pouvez utiliser plusieurs fichiers de commandes dans une commande de lien.You can use more than one command file in a LINK command. LIEN accepte l’entrée de fichier de commandes comme si elle était spécifiée à cet emplacement sur la ligne de commande.LINK accepts the command-file input as if it were specified in that location on the command line. Fichiers de commandes ne peuvent pas être imbriquées.Command files cannot be nested. LIEN renvoie le contenu des fichiers de commandes, à moins que le /NOLOGO option est spécifiée.LINK echoes the contents of command files, unless the /NOLOGO option is specified.

ExempleExample

La commande suivante pour générer une DLL passe les noms des fichiers objets et bibliothèques dans des fichiers de commande distincte et utilise un troisième fichier de commandes pour la spécification de l’option /EXPORTS :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

L'outil LINK utilise les variables d'environnement suivantes :The LINK tool uses the following environment variables:

  • LIEN et _lien_, s’il est défini.LINK and _LINK_, if defined. L’outil LINK ajoute les options et les arguments définis dans la variable d’environnement LINK et ajoute les options et arguments définis dans le _lien_ variable d’environnement pour les arguments de ligne de commande avant le traitement.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, si elle est définie.LIB, if defined. L’outil LINK utilise le chemin d’accès LIB lors de la recherche pour un objet, bibliothèque ou un autre fichier spécifié sur la ligne de commande ou par le /de BASE option.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. Il utilise également le chemin d’accès LIB pour rechercher un fichier .pdb nommé dans un objet.It also uses the LIB path to find a .pdb file named in an object. La variable LIB peut contenir une ou plusieurs spécifications de chemin d'accès, séparées par des points-virgules.The LIB variable can contain one or more path specifications, separated by semicolons. Un chemin d'accès doit pointer vers le sous-répertoire \lib de votre installation Visual C++.One path must point to the \lib subdirectory of your Visual C++ installation.

  • PATH, si l’outil doit exécuter CVTRES et ne peut pas trouver le fichier dans le même répertoire que LINK.PATH, if the tool needs to run CVTRES and cannot find the file in the same directory as LINK itself. (LINK requiert CVTRES pour lier un fichier .res.) PATH doit pointer vers le sous-répertoire \bin de votre installation Visual C++.(LINK requires CVTRES to link a .res file.) PATH must point to the \bin subdirectory of your Visual C++ installation.

  • TMP, pour spécifier un répertoire lors de la liaison de fichiers OMF ou .res.TMP, to specify a directory when linking OMF or .res files.

Voir aussiSee also

Référence à la génération C/C++ Options de l’éditeur de liens MSVC les fichiers de définition de Module (.def) prise en charge de l’éditeur de liens pour DLL à chargement différéC/C++ Building Reference MSVC Linker Options Module-Definition (.def) Files Linker Support for Delay-Loaded DLLs