Technische Details zu ILINK32 und ILINK64

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Linker für C++


Informationen über die Verwendung von ILINK32 und ILINK64 in der Befehlszeile finden Sie auf der Seite Verwenden von ILINK32 und ILINK64 in der Befehlszeile.

ILINK32

Der ILINK32-Linker linkt Objektmodule (.OBJ-Dateien), Bibliotheksmodule (.LIB-Dateien) und Ressourcen, um ausführbare Dateien (.EXE-, .DLL- und .BPL-Dateien) zu erzeugen. ILINK32 erzeugt und verwaltet eine Reihe von Linker-Statusdateien, die diese Informationen enthalten. Diese Statusdateien ermöglichen ein inkrementelles Linken und reduzieren dadurch die Link-Dauer erheblich. Siehe Linker-Statusdateien und Debug-Informationsdatei.

Moduldefinitionsdateien

Die Moduldefinitionsdatei ist eine Textdatei, die Informationen für ILINK32 über den Inhalt und die Systemanforderungen einer Windows-Anwendung bereitstellt. Sie können eine Moduldefinitionsdatei mit IMPDEF.EXE und Importbibliotheken aus Moduldefinitionsdateien mit IMPLIB.EXE erstellen.

Wenn keine Moduldefinitionsdatei angegeben wurde, werden die folgenden Voreinstellungen verwendet:

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

Um die Voreinstellungen der Attribute einer Anwendung zu ändern, müssen Sie eine Moduldefinitionsdatei erstellen.

Wenn Sie die EXETYPE-Anweisung löschen, kann der Linker anhand der Optionen in der Befehlszeile den Typ des zu erzeugenden Programms bestimmen.

Anstelle des IMPORTS-Abschnitts der Moduldefinition kann eine Importbibliothek verwendet werden.

Mit dem Schlüsselwort __declspec(dllexport) oder _export können im C- und C++-Quelltext Exportfunktionen definiert und somit auf einen EXPORTS-Abschnitt verzichtet werden. Beachten Sie aber, dass Funktionen beim Export mit __declspec(dllexport) oder _export nach Namen und nicht nach Ordinalwert exportiert werden. __declspec(dllexport) ist als Exportmethode vorzuziehen.

Weitere Informationen finden Sie unter Moduldefinitionsdateien.

Linker-Statusdateien

Die vier Linker-Statusdateien haben die folgenden Dateierweiterungen:

  • .ILC (Linker-Quelltextdatei)
  • .ILD (Linker-Datendatei)
  • .ILF (andere Linker-Datei)
  • .ILS (Linker-Symboldatei)

Diese vier Dateien sind für das inkrementelle Linken erforderlich.

Sie können die Linker-Statusdateien auf der Seite Projekt > Optionen > C++-Linker folgendermaßen steuern:

  • Um die Erstellung der Linker-Statusdateien zu deaktivieren, aktivieren Sie die Option Inkrementelles Linken deaktivieren (-Gn).
  • Um die aktuellen Linker-Statusdateien zu löschen und beim nächsten Linken neue Dateien zu erstellen, aktivieren Sie die Option Vor dem Linken Status leeren (-C).

Debug-Informationsdatei

Wenn Sie Debug-Informationen in Ihre gelinkte ausführbare Datei aufnehmen, speichert ILINK32 die Debug-Informationen immer in einer separaten TDS-Debug-Datei mit dem Standardnamen <Projekt>.tds. Der Debugger kann diese Debug-Informationen lesen. ILINK32 erzeugt diese Datei immer. Wenn Sie die Linker-Option -v (oder /v) nicht angeben, wird die Debug-Symboldatei als ungültig markiert.

DCC32.exe (der Delphi-Compiler) enthält zur Erzeugung von Debug-Symboldateien die Befehlszeilenoption -VT. Sie können mit der Option Debug-Informationen in separate TDS-Datei ausgeben auf der Seite Linken der Projektoptionen festlegen, dass der Delphi-Compiler Debug-Symboldateien erzeugen soll.

ILINK64

ILINK64 ist der Linker für C++-Anwendungen für 64-Bit-Windows. Befehlssyntax und -verwendung für ILINK64 entsprechen ILINK32. Hauptunterschiede der beiden C++-Linker für Windows:

  • ILINK32 linkt .obj- und .lib-Dateien in eine ausführbare oder .dll-Datei für 32-Bit-Windows.
  • ILINK64 linkt .o- und .a-Dateien in eine ausführbare oder .dll-Datei für 64-Bit-Windows.

Außer diesen Hauptunterschieden arbeiten die beiden Linker auf dieselbe Weise.

Behandlung von ILINK64-Fehlern

Unter Warnungen und Fehler von BCC64 wird die Behandlung des folgenden Fehlers von ILINK64, dem C++-Linker für 64-Bit-Windows, beschrieben:

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

Siehe auch