Linker Fehler bei Komponente



  • Hallo,

    ich habe eine Unit erstellt in der eine Klasse mit ein paar methoden enthalten ist.

    Wenn ich nun die header in ein Formularprojekt einbinde, funktioniert auch alles und ich kann damit arbeiten. Wenn ich aber die header datei bei einer selbst erstellten Komponente benutze bekomme ich einen Linker Fehler.

    [ILINK32 Fehler] Error: Nicht aufl÷sbares externes 'TMyScanner::RTC_jump_abs(short, short)' referenziert von  D:\...\DEBUG\VISITOR.OBJ
    

    Hat jemand eine Idee warum ich den Fehler bekomme??

    Danke schonmal für die Hilfe!



  • JBOpael schrieb:

    [ILINK32 Fehler] Error: Nicht aufl÷sbares externes 'TMyScanner::RTC_jump_abs(short, short)' referenziert von  D:\...\DEBUG\VISITOR.OBJ
    

    Hi,

    RTC_jump_abs(short, short); keine BCB-Methode ?
    offensichtlich wird sie nicht gefunden. Die entsprechende Source-Datei hast du dem Projekt hinzugefügt?

    mfg
    kpeter



  • Ich sagte ja ist ne eigene Unit.

    Ich hab auch als erstes vermutet das er die nicht finden kann. Deswegen hab ich dem Komponeten Projekt Header und Source auch mal hinzugefügt, aber dennoch bekomme ich den Linker Fehler.

    mal eine Frage nebenher, woher weiß die header datei eigenlich welche die richtige source datei? Geht das nur nach Dateinamen?



  • Hallo

    mal eine Frage nebenher, woher weiß die header datei eigenlich welche die richtige source datei? Geht das nur nach Dateinamen?

    Der Header muß seine Implementationsdatei nicht kennen (Denn schließlich sind Header-Dateien gerade dazu da, die Implemetation zu verbergen).

    Sondern die Implementationsdatei sollte ihre Headerdatei kennen, und dazu schreibt man ja ein include in die Implementationsdatei.
    Das bedeutet auch, das es dem Compiler egal ist, ob es zu einer cpp-Datei auch eine h-Datei mit gleichem Namen gibt. Nur die includes sind wichtig.

    bis bald
    akari



  • Ich hab es jetzt hin bekommen aber ich versteh noch nicht warum es jetzt Funktioniert.

    Also bei einer Formularanwendung recht es wenn ich in den Optionen dem Compiler die Includepfade gebe wo meine header liegt.

    Bei einem Komponentenprojekt muss ich dem Projekt explizit die source datei zuweisen damit er das gelinkt bekommt und zwar von allen selbsgeschiebenen Units die verwendet werden.

    Den fehler den ich hatte war das die header die ich eingebunden habe enthielt noch eine header zu ner selbstgeschrieben datei. Davon wollte der linker auch noch die source haben!!??



  • Hallo

    Wenn du eine Headerdatei direkt in dein Projekt einbindest, must du auch alle dazugehörenden Implementationsdateien ins Projekt einbinden.
    Um das zu umgehen, must du entweder eine statische Library aus der einzubindenen Komponente machen, oder gleich ein richtiges Builder-spezifisches Package (das sich dann auch in der Komponentenpalette registriert).

    Weitere Details findest du im Forumtutorial, unter Einführung in die Komponentenentwicklung und DLL - Erstellung und Einbindung.

    bis bald
    akari


Anmelden zum Antworten