E2172 Eine benötigte Bibliothekshilfsfunktion wurde vom Linker eliminiert (%s) (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Der integrierte Debugger versucht, einige der Compiler-Hilfsfunktionen für die Ausführung der angeforderten Auswertung zu benutzen. Der Linker hat auf der anderen Seite festgestellt, dass die Hilfsfunktion nicht vom Programm benutzt wurde, und hat sie daher nicht mit dem Programm verknüpft.

  1. Erstellen Sie eine neue Anwendung.
  2. Platzieren Sie eine Schaltfläche im Formular.
  3. Klicken Sie doppelt auf die Schaltfläche aus, um zur Klick-Methode zu gelangen.
  4. Fügen Sie eine globale Variable 'v' vom Typ string zum Interface-Abschnitt hinzu.
  5. Fügen Sie eine globale Variable 'p' vom Typ PChar zum Interface-Abschnitt hinzu.

Die Klick-Methode sollte folgendermaßen aussehen:

  1. procedure TForm1.Button1Click(Sender: TObject); begin v := 'Initialized'; p := NIL; v := 'Abid'; end;
  2. Setzen Sie einen Haltepunkt bei der zweiten Zuweisung zu 'v'.
  3. Compilieren Sie die Anwendung, und führen Sie sie aus.
  4. Klicken Sie auf die Schaltfläche.
  5. Wenn der Haltepunkt erreicht wird, öffnen Sie den Auswerter (Start/Auswerten/Ändern).
  6. Werten Sie V aus.
  7. Setzen Sie den Cursor in das Feld "Neuer Wert".
  8. Geben Sie 'p' ein.
  9. Wählen Sie Ändern.

Der Compiler verwendet eine spezielle Funktion, um ein PChar in einen String zu kopieren. Falls diese spezielle Funktion vom Programm nicht benutzt wird, wird sie zur Verringerung der Größe der erzeugten ausführbaren Datei nicht mit ihr verknüpft. In diesem Fall findet keine Zuweisung eines PChar zu einem String statt, so dass er vom Linker gelöscht wird.


  procedure TForm1.Button1Click(Sender: TObject);
  begin
       v := 'Initialized';
       p := NIL;
       v := 'Abid';
       v := p;
  end;

Durch Einbau einer zusätzlichen Zuweisung eines PChar zu einem String wird sichergestellt, dass der Linker die gewünschte Prozedur in das Programm aufnimmt. Wenn Sie während einer Debugging-Sitzung auf diesen Fehler stoßen, deutet dies darauf hin, dass Sie ein Sprachen- oder Umgebungsmerkmal verwenden, das im ursprünglichen Programm nicht gebraucht wurde.