AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion vom Linker entfernt..

Offene Frage von "Der schöne Günther"
Ein Thema von Angel4585 · begonnen am 1. Aug 2006 · letzter Beitrag vom 26. Feb 2014
Antwort Antwort
Seite 2 von 2     12   
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Funktion vom Linker entfernt..

  Alt 25. Feb 2014, 13:17
Generationen später.

Ich habe immer noch das gleiche Problem. Gibt es generell ein "Linker, entferne nichts ungenutztes!", das man irgendwo einbauen kann?

Mit Gewalt irgendwo gezwungene Aufrufe für irgendwas einzubauen (meinetwegen umgeben von einem "IFDEF DEBUG"-Block) ist ja irgendwie keine schöne Lösung.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#12

AW: Funktion vom Linker entfernt..

  Alt 25. Feb 2014, 14:22
Aktuell wird nichts mehr entfernt.
es ist eher so, daß man jetzt (mindestens seit XE3) dem Compiler explizit sagen muß, daß er ungenutzte Methoden weglassen soll.
(vorallem bei Published-Methoden, aber ich weiß jetzt nicht, ob das auch alle anderen Methoden betrifft)

Drum werden die EXEn auch immer größer. (und wegen der RTTI)

Delphi geht quasi davon aus, daß man die Funktionen dennoch nutzen und z.B. indirekt via RTTI aufrufen könnte, selbst wenn sie nirgendwo explizit aufgerufen wird.




Aber wozu soll denn ungenutztes Zeug mit in die EXE gelinkt werden, wen du es eh nicht verwendest?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Feb 2014 um 14:25 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: Funktion vom Linker entfernt..

  Alt 26. Feb 2014, 09:44
Ganz konkretes Beispiel: Wenn ich im Debugger in meiner DEBUG-Fassung eine Interface-Referenz nehmen möchte und sie auf eine Klassen-Referenz casten möchte. Dann kann ich das nicht, denn "SafeIntfAsClass wurde vom Linker entfernt".

Nun muss ich in der Debug-Fassung meines Projekts einmal künstlich so einen Cast einbauen damit der Linker es nicht entfernt. Mit der Zeit treffe ich immer wieder auf andere Aufrufe die beim Debuggen nützlich sind, aber entfernt wurden.

Daher meine Frage: Kann ich nicht irgendwo an (bislang nicht gefundenen Linker-Optionen) einstellen, dass er bitte einfach alles aus den inkludierten Units mitnimmt und nichts entfernt?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#14

AW: Funktion vom Linker entfernt..

  Alt 26. Feb 2014, 10:55
Diese Methoden einfach mal published zu machen hilft nicht?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: Funktion vom Linker entfernt..

  Alt 26. Feb 2014, 11:34
Ich erkläre es mal andersherum.


Gegeben sei folgendes:
Delphi-Quellcode:
   IMyInterface = interface
      //
   end;

   TMyClass2 = class(TInterfacedObject, IMyInterface)
      protected var
         someInternalStuff: Single;
   end;
Bild 1: Ich habe eine IMyInterface -Variable. Der Compiler sagt mir direkt, dass sich dahinter eine TMyClass2 -Instanz verbirgt. Soweit alles super.

Bild 2: Jetzt möchte ich die Variable auf TMyClass2 casten um zu sehen, was denn someInternalStuff für einen Wert hat. Da ich so etwas im Quelltext nie gemacht habe, hat der Linker das entfernt.

Bild 3: Die Lösung: Um das zu umgehen muss ich halt im Quelltext einfach mal ein Interface zu einem Objekt casten. Dann geht es.


Was ich suche: Eine Alternative dazu. Der Fall "Interface zu Objekt" ist ja nur ein Beispiel. Ich würde gerne vermeiden, immer Aufrufe zu sammeln, die ich in der Debug-Fassung einmal künstlich aufrufen muss. Gibt es da einen Weg?
Miniaturansicht angehängter Grafiken
1.png   2.png   3.png  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz