Liaison
Dans un projet C++, l’étape de liaison est effectuée après que le compilateur compile le code source dans des fichiers objet (*.obj). L’éditeur de liens (link.exe
) combine les fichiers objet dans un fichier exécutable unique.
Les options de l’éditeur de liens peuvent être définies à l’intérieur ou en dehors de Visual Studio. Dans Visual Studio, vous accédez aux options de l’éditeur de liens en cliquant avec le bouton droit sur un nœud de projet dans Explorateur de solutions et en choisissant Propriétés pour afficher les pages de propriétés. Choisissez Éditeur de liens dans le volet gauche pour développer le nœud et afficher toutes les options.
Syntaxe de ligne de commande de l’éditeur de liens
Lorsque vous exécutez l’éditeur de liens en dehors de Visual Studio, vous pouvez spécifier l’entrée d’une ou plusieurs façons :
- Sur la ligne de commande
- Utilisation de fichiers de commande
- Dans les variables d’environnement
L’éditeur de liens traite d’abord les options spécifiées dans la LINK
variable d’environnement, puis les options dans l’ordre dans lequel ils sont spécifiés sur la ligne de commande et dans les fichiers de commande. Si une option est répétée avec des arguments différents, la dernière traitée est prioritaire.
Les options s’appliquent à l’ensemble de la build ; aucune option ne peut être appliquée à des fichiers d’entrée spécifiques.
Pour exécuter link.exe
, utilisez la syntaxe de commande suivante :
link arguments
Les arguments
options et les noms de fichiers include peuvent être spécifiés dans n’importe quel ordre. Les options sont traitées en premier, puis les fichiers. Utilisez un ou plusieurs espaces ou onglets pour séparer les arguments.
Remarque
Vous pouvez démarrer cet outil uniquement à partir de l’invite de commandes Visual Studio. Vous ne pouvez pas le démarrer à partir d’une invite de commandes système ni de l’Explorateur de fichiers.
Ligne de commande
Sur la ligne de commande, une option se compose d’un spécificateur d’option, d’un tiret (-
) ou d’une barre oblique (/
), suivie du nom de l’option. Les noms d’options ne peuvent pas être abrégés. Certaines options prennent un argument, spécifié après un signe deux-points (:
). Aucun espace ou onglet n’est autorisé dans une spécification d’option, sauf dans une chaîne entre guillemets dans l’option /COMMENT
. Spécifiez des arguments numériques en notation de langage C ou décimal. Les noms d’options et leurs arguments de mot clé ou de nom de fichier ne respectent pas la casse, mais les identificateurs en tant qu’arguments respectent la casse.
Pour transmettre un fichier à l’éditeur de liens, spécifiez le nom de fichier sur la ligne de commande après la link.exe
commande. Vous pouvez spécifier un chemin absolu ou relatif avec le nom de fichier, et vous pouvez utiliser des caractères génériques dans le nom de fichier. Si vous omettez l’extension point (.
) et nom de fichier, l’éditeur de liens suppose une extension de .obj
recherche du fichier. L’éditeur de liens n’utilise pas d’extensions de nom de fichier ou le manque d’entre eux pour faire des hypothèses sur le contenu des fichiers. Il détermine le type de fichier en l’examinant et le traite en conséquence.
L’éditeur de liens retourne zéro pour la réussite (aucune erreur). Sinon, elle retourne le numéro d’erreur qui a arrêté le lien. Par exemple, si l’éditeur de liens génère LNK1104
, l’éditeur de liens retourne 1104. En conséquence, le numéro d’erreur le plus bas retourné par l’éditeur de liens est 1 000. 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é ni link.exe
c2.dll
.
Fichiers de commande éditeur de liens
Vous pouvez passer des arguments de ligne de commande au link.exe
format d’un fichier de commandes. Pour spécifier un fichier de commandes à l’éditeur de liens, utilisez la syntaxe suivante :
link @commandfile
Il commandfile
s’agit du nom d’un fichier texte. Aucun espace ou onglet n’est autorisé entre le signe (@) et le nom de fichier. Il n’y a pas d’extension par défaut ; vous devez spécifier le nom de fichier complet, y compris toute extension. Les caractères génériques ne peuvent pas être utilisés. Vous pouvez spécifier un chemin absolu ou relatif avec le nom de fichier. L’éditeur de liens n’utilise pas de variable d’environnement pour rechercher le fichier.
Dans le fichier de commandes, les arguments sont séparés par des espaces ou des onglets (comme sur la ligne de commande) et par des caractères de nouvelle ligne.
Vous pouvez spécifier tout ou partie de la ligne de commande dans un fichier de commandes. Vous pouvez utiliser plusieurs fichiers de commandes dans une link.exe
commande. L’éditeur de liens accepte l’entrée du fichier de commande comme si elle était spécifiée à cet emplacement sur la ligne de commande. Les fichiers de commande ne peuvent pas être imbriqués. L’éditeur de liens renvoie le contenu des fichiers de commande, sauf indication /NOLOGO
contraire.
Exemple
La commande suivante génère une DLL. Il transmet les noms des fichiers et bibliothèques d’objets dans des fichiers de commande distincts et utilise un troisième fichier de commande pour la spécification de l’option /EXPORTS
:
link /dll @objlist.txt @liblist.txt @exports.txt
Variables d’environnement LINK
L’éditeur de liens reconnaît les variables d’environnement suivantes :
LINK
et_LINK_
, s’il est défini. L’éditeur de liens ajoute les options et arguments définis dans laLINK
variable d’environnement et ajoute les options et arguments définis dans la_LINK_
variable d’environnement aux arguments de ligne de commande avant le traitement.LIB
, si elle est définie. L’éditeur de liens utilise leLIB
chemin d’accès lorsqu’il recherche un objet, une bibliothèque ou un autre fichier spécifié sur la ligne de commande ou par l’option/BASE
. Il utilise également leLIB
chemin d’accès pour rechercher un.pdb
fichier nommé dans un objet. LaLIB
variable peut contenir une ou plusieurs spécifications de chemin d’accès, séparées par des points-virgules. Un chemin doit pointer vers le\lib
sous-répertoire de votre installation Visual C++.PATH
, si l’outil doit s’exécuterCVTRES
et ne trouve pas le fichier dans le même répertoire quelink.exe
lui-même. (link.exe
nécessiteCVTRES
de lier un.res
fichier.)PATH
doit pointer vers le\bin
sous-répertoire de votre installation Visual C++.TMP
, pour spécifier un répertoire lors de la liaison d’OMF ou.res
de fichiers.
Voir aussi
Référence à la génération C/C++
Options de l’éditeur de liens MSVC
Fichiers de définition de module (.def)
Prise en charge de l’éditeur de liens pour les DLL à chargement différé