![]() |
Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Hallo,
wenn ich mein Programm an Nutzer weitergebe, erhalten diese den Fehler "rtl190.bpl nicht gefunden" beim Ausführen meiner App, auch wenn ich diese zu den Laufzeit-Packages hinzugefügt habe. Kann mir jemand sagen wieso? Danke im voraus! |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Moin...:P
1: Option: Mit mit Laufzeit Packages = False ... Defaulteinstellung: Alle bpl werden einkompiliert. 2: Option: Mit mit Laufzeit Packages = True ... Es müssen alle bpl die benötigt werden beigelegt werden. |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Die Option mit Laufzeitpackages macht nur wirklich Sinn, wenn man mehrere DLLs oder Anwendungen mitliefert. Denn ansonsten nehmen die Laufzeitpackages mehr Platz ein als man an Größe der Anwendung spart.
|
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Hallo,
Zitat:
Die Laufzeitpackages werden zur Laufzeit des Programms geladen und sind nicht in der Exe selbst reinkompiliert. Sinn machen Laufzeitpackages aber auch, wenn man Updates seiner Software ausliefert und weiss, dass die Packages bereits installiert sind. |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Zitat:
|
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Liste der Anhänge anzeigen (Anzahl: 1)
Ah, okay, danke.
Das Ding ist, ich habe "rtl" bereits zu den Laufzeit-Packages hinzugefügt, dummerweise kommt diese Fehlermeldung dann immer noch (sogar noch einmal mehr als zuvor). Vielleicht habe ich diese in der falschen reihenfolge eingefügt?? Siehe Anhang |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Moin...8-)
Das wichtigste hast du uns verschwiegen... ob die Checkbox (unter diesem Fenster) enabled oder disabled ist... :P |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Zitat:
Diese Einstellung vererbt sich evtl. nicht in bzw. aus allen Buildkonfigurationen. Du musst in deiner also prüfen, ob es dort richtig ist. |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Sie ist enabled, somit müssten diese also mit eingebunden werden, oder nicht (?)
Okay, also was ich möchte ist, dass die packages nicht mitgeliefert werden müssen und ich trotzdem zugriff auf diese zur laufzeit habe. Die Standardeinstellung macht das ja so dass der Linker die Packages rausschmeißt die nicht im Code verwendet werden. Wenn das Häckchen gesetzt ist dann bleiben diese aber und ich kann auf alle Klassen etc. mit der RTTI vom Code aus drauf zugreifen. Nur leider bekommen andere dann beim Startup diese Fehlermeldung. Ich will auf alle Klassen der angegebenen Packages zur Laufzeit dynamisch (via RTTI) zugreifen können, ohne extra die BPLs mitliefern zu müssen. Und dies auch, wenn die Units oder Klassen nicht explizit im Code verwendet wurden. Wie kann ich dies jetzt erreichen? |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Die Option Laufzeitpackages bewirkt, dass der Code nicht in die Exe einkompiliert wird und du stattdessen die Laufzeitpackages mitliefern musst.
Genau das stand doch schon in der ersten Antwort... //edit: Zitat:
Ohne definitiv nicht, weil diese dann schlicht gar nicht in die Exe gelinkt werden. In jedem Fall musst du die BPLs dann mitliefern. |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Naja, wenn ich das hächchen entferne dann kann ich ja nicht auf die Klassen in den Packages zugreifen, sofern ich diese nicht im Code verwende. Deshalb muss ich sie ja linken. Wenn ich den Haken entferne, dann kann ich mit der RTTI nicht auf meine Klasse zugreifen, weil der Linker die raus schmeißt.
Ich will aber, dass er sie drin lässt. Deshalb hab ich es ja ursprünglich aktiviert. |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Dann bleibt dir nur die BPLs mitzuliefern, wenn es mit Laufzeitpackages funktioniert.
Wir haben stattdessen die Klassen im Code registriert bzw. benutzt, damit sie einkompiliert werden. Da wir die meisten, soweit möglich, ohnehin im Pascal Script zur Verfügung stellen, sind die meisten aber ohnehin schon drin. |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Hmmm. Schade, dann muss ich das wohl machen. Die BPLs müssen dann ins Verzeichnis der EXE, oder kann ich diese auch dynamisch laden?
|
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Die müssen nur im Systempfad liegen.
|
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Also C:\Windows\System32\ ?
Und es reicht nicht wenn sie im Ordner der Anwendung liegen, so wie es bei DLLs der Fall ist? |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Sie müssen im Systempfad liegen, das heißt irgendwo, wo das Programm sie finden kann.
Programmverzeichnis, System32 ... oder in irgendeinem Verzeichnis, das in der PATH-Variabel des Betriebssystem enthalten ist. Das kann bei den Umgebungsvariabeln konfiguriert werden. Sofern Du Deine Software mit 'nem Setupprogramm auslieferst, müsstest Du da sogar einen eigenen Pfad mit in die PATH-Variabel aufnehmen können. Damit hättest Du dann fast vollständige Freiheit, wo Du die Laufzeitpackages ablegst. |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Okay, danke! Noch zwei offene Fragen meinerseits:
Wo finde ich die fertigen BPL-Dateien? Und angenommen ich will die Packages dynamisch laden (mit LoadPackage etc.), dann entferne ich alle packages aus den Einstellungen, entferne das Hakchen und lade sie beim Programmstart? |
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Zitat:
Das kannst du auch leicht mit Everything oder dem Kommandozeilenbefehl where ermitteln. Zitat:
|
AW: Fehler "rtl190.bpl nicht gefunden" auf anderen Systemen
Bei BPLs wird alles einkompiliert (gelinkt), was im initialion steht.
und die Units sollten irgendwo wenigstens in einem USES (ich nehme die DPR, meine MainUnit oder eine gesonderte Import-PAS dafür) eingebunden sein. Bei einer EXE kann der Kompiler dagegen den Code ganzer Units beim Linken rauswerfen, wenn er nirgendwo verwendet wird. Also solltest du die gewünschten Klassen mindestens im Initialization der Unit aufrufen, aber ob der Compilier dann ungenutzte Felder/Methoden dieser Klassen entsorgt, das ist eine Andere Sache ... ich würde sie mindestens Published deklaieren, wenn sie via RTTI verwendet werden sollen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz