Détails techniques concernant ILINK32 et ILINK64

De RAD Studio
Aller à : navigation, rechercher

Remonter à Lieurs C++


Pour des informations sur l'utilisation de ILINK32 et ILINK64 en ligne de commande, voir Utilisation de ILINK32 et ILINK64 en ligne de commande.

ILINK32

ILINK32 lie des modules objets (fichiers .OBJ), des modules bibliothèques (fichiers .LIB) et des ressources pour produire des fichiers exécutables (fichiers .EXE, .DLL et .BPL). ILINK32 crée et gère une série de fichiers d'état du lieur contenant ces informations. Ces fichiers d'état permettent aux liens suivants d'être de type incrémentiel, ce qui réduit sensiblement la durée totale des liens. Voir Fichiers d'état du lieur et Fichier d'informations de débogage.

Fichiers de définition de module

Le fichier de définition de module est un fichier texte qui fournit des informations à ILINK32 sur le contenu et les exigences système d'une application Windows. Vous pouvez créer un fichier de définition de module en utilisant IMPDEF.EXE, et vous pouvez créer des bibliothèques d'importation à partir de fichiers de définition de module en utilisant IMPLIB.EXE.

Si aucun fichier de définition de module n'est spécifié, les valeurs par défaut suivantes sont utilisées :

CODE        PRELOAD MOVEABLE DISCARDABLE
DATA        PRELOAD MOVEABLE MULTIPLE  (for applications)
            PRELOAD MOVEABLE SINGLE    (for DLLs)
HEAPSIZE    4096
STACKSIZE   1048576

Pour changer les attributs d'une application à partir de ces valeurs par défaut, vous devez créer un fichier de définition de module.

Si vous supprimez l'instruction EXETYPE, le lieur peut déterminer le type d'exécutable que vous voulez produire à partir des options de la ligne de commande.

Vous pouvez inclure une bibliothèque d'importation à la place de la section IMPORTS du fichier de définition de module.

Vous pouvez utiliser le mot réservé __declspec(dllexport) ou _export dans les définitions des fonctions d'exportation de votre code source C et C++ pour vous passer d'une section EXPORTS. Notez cependant que si vous utilisez __declspec(dllexport) ou _export pour exporter une fonction, celle-ci sera exportée par son nom et non par son numéro ordinal. Veuillez aussi noter que __declspec(dllexport) est la méthode d'exportation préférée.

Pour de plus amples informations, voir Fichiers de définition de module.

Fichiers d'état du lieur

Les quatre fichiers d'état du lieur ont les extensions suivantes :

  • .ILC (fichier de code du lieur)
  • .ILD (fichier de données du lieur)
  • .ILF (autre fichier du lieur)
  • .ILS (fichier de symboles du lieur)

Ces quatre fichiers sont requis pour la liaison incrémentielle.

Vous pouvez contrôler les fichiers d'état du lieur dans la page Projet > Options > Lieur C++, comme suit :

  • Pour désactiver la création des fichiers d'état du lieur, cochez l'option Désactiver la liaison incrémentielle (-Gn).
  • Pour effacer les fichiers d'état du lieur actuels et en créer de nouveaux dans la prochaine opération de liaison, cochez l'option Effacer l'état avant la liaison (-C).

Fichier d'informations de débogage

Si vous incluez des informations de débogage dans l'exécutable lié final, ILINK32 stockera toujours les informations de débogage dans un fichier de débogage TDS distinct, nommé par défaut <project>.tds. Le débogueur devrait être capable de lire ce fichier d'informations du débogueur. ILINK32 crée toujours ce fichier. Si le commutateur du lieur -v (ou /v) n'est pas activé, le fichier de symboles de débogage est signalé comme étant non valide.

DCC32.exe (le compilateur Delphi) a un commutateur de ligne de commande -VT pour la génération des fichiers des symboles de débogage. Vous pouvez aussi spécifier que le compilateur Delphi doit générer les fichiers de symboles de débogage en activant l'option Placer les informations de débogage dans un fichier TDS distinct sur la page Liaison de la page Options de projet.

ILINK64

ILINK64 est le lieur pour les applications C++ Windows 64 bits. La syntaxe de commande et l'utilisation de ILINK64 sont les mêmes que celles de ILINK32. Les principales différences entre les deux lieurs C++ pour Windows sont :

  • ILINK32 lie des fichiers .obj et .lib dans une .dll ou un exécutable Windows 32 bits.
  • ILLINK64 lie des fichiers .o et .a dans une .dll ou un exécutable Windows 64 bits.

Malgré ces principales différences, les deux lieurs s'utilisent de la même façon.

Gestion des erreurs ILINK64

La rubrique Erreurs et avertissements BCC64 décrit la gestion de l'erreur suivante de ILINK64, le lieur incrémentiel pour Windows 64 bits :

 Public symbol 'x' defined in both module A and B

Voir aussi