Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 15. Sep 2022, 18:27
Und auch statische Links auf Funktionen (WinAPI) und damit auch auf DLLs,
welche dort nicht vorhanden sind, würden sofort beim Start knallen, noch lange bevor irgendein Code von dir ausgeführt würde.

Fazit: Du mußt deinen Code auslagern (z.B. DLL oder BPL), wo dann sonst nichts Böses enthalten ist.


Rate mal, warum ich gern Delayed-Importe nutze (man kann aber auch dynamische Importe nutzen, also LoadLibrary+GetProcAddress), für Dinge, die eventuell nicht vorhanden sind werden.


Und wer ganz böse ist ... da EXE und DLL das selbe PE-Format und die gleiche Eintrittsprozedur implementieren,
könnte man eine EXE auch als DLL laden (und mit bissl Gekacktem auch andersrum) ... wobei die DLL als EXE zu laden bissl krank ist und man da besser den DLLHost von Windows für benutzt.


Zitat:
ist keine W32 Anwedung
Das dürfte wohl eher nicht am FMX liegen,
sondern daran, dass aktuelle Delphis eine höhere PE-Version angeben,
welche W2K nicht unterstützt / nicht kennt.

Wenn ja, dann wäre es auch egal, ob du so kompilierst, dass FMX garnicht enthalten ist.
Du könntest aber den PE-Header umschreiben (ich glaub die Version ging auch irgendwie als Compiler-Directive, oder eben nach dem Kompilieren die Bits drehen)
Oder du mußt eben ein älteres Delphi nutzen.


Problem bei Fehlermeldungen wie "ist keine W32 Anwedung" ist aber, dass diese Fehlermeldung garnicht von der EXE selber kommen muß,
sondern es kann auch über eine DLL kommen, welche geladen werden soll und die dann nicht passt.
(du weißt nicht von wo der Fehlercode kommt, da Microsoft zum GetLastError leider keine ZusatzInfos bereitstellt, also einen "Text", wo z.B. der Dateiname zum Fehlercode drin stünde)
Da kannst du nur mit dem ProcessExplorer schauen, was versucht wird zu laden und das Letze dürfte dann das sein, was wirklich knallt.
$2B or not $2B

Geändert von himitsu (15. Sep 2022 um 18:37 Uhr)
  Mit Zitat antworten Zitat