EClassNotFound bei Standalone-Compilierung
-
Hi, vielleicht könnt ihr mir helfen.
Ich arbeite sein einiger Zeit mit eigenen Komponenten, die ich in einem Package zusammengefasst habe. Es sind Entwurfs- und Laufzeitkomponenten.
Funktioniert soweit alles einwandfrei und nun habe ich die Kompos in einem
größeren Projekt verwendet. Z.b. ein TMyPanel.Das Prog funktioniert einwandfrei, wenn ich es mit der Option "Laufzeitpackages" compiliere.
Nun wollt ich schnell ne Standalone exe erzeugen und habe diese Option
deaktiviert sowie Dyn RTL... usw.Beim Starten meines Progs kommt nun aber der Fehler "EClassNotFound": Er meint, er könnte meine Kompo TMyPanel nun nicht finden.
Woran kann das liegen?
Ich habe schnell noch mal ne kleine andere Anwendung erstellt... meine Kompos drauf -> Standalone erzeugt und es funzt einwandfrei. Nur mit meinem
größerem Projekt nicht. Was kann ich da "verdallt" haben. Ich finde keine
Unterschiede... hmmm ...Danke für jede Hilfe
-
Hi.
hevel schrieb:
Beim Starten meines Progs kommt nun aber der Fehler "EClassNotFound"
Also, um es gleich vorwegzunehmen, mit Komponenten-Zeugs kenne ich mich nur wenig aus. Ich kann also nur vage Vermutungen anstellen.
Was dem Programm scheinbar fehlt, ist ein Aufruf von "RegisterComponents" - etwa so:TComponentClass classes[1] = {__classid(TMyPanel)}; RegisterComponents("MyComponents", classes, 0);
Das braucht der CBuilder wohl für die Deserialisierung der Formular-Daten (*.dfm) bzw. wenn Du Deine Komponente aus einen stream heraus erzeugen willst. Vielleicht fehlt das bei Deiner Komponente. Das Problem hatte ich auch schon mal und da hat obiger Code geholfen. Wenn Du mehrere Componenten hast, ändert sich der code entsprechend:
TComponentClass classes[3] = { __classid(TMyPanel), __classid(TMyEdit), __classid(TMyButton) }; RegisterClasses(classes, 2);
-
Danke dschensky,
danke für den Tip. Das steht alles ordnungsgemäß drin und war somit leider auch nicht der Fehler.
Das verwunderliche ist für mich, dass jedes andere Projekt in welchem TMyPanel
verwendet wird sich als Standalone compilieren lässt und dann auch startet. Nur das, an dem ich jetzt arbeit nicht.Ich habe mal meine TMyPanels durch TPanel ersetzt und schon funktionierts. Alle includes MyPanel.h usw. entfernt. Obj-files gelöscht und dann wieder eine
TMyPanel-Komponete in auf mein Formular gebracht... und schon gehts nicht mehr.
Kanns mir wirklich net mehr erklären.Hat vielleicht noch jemand nen Tip?
MfG
Hevel