Problem mit selbst entwickelter Komponente
-
Hallo!
Ich habe folgendes Problem: Ich habe eine Komponente entwickelt.
Soweit so gut, das ist ja kein Problem werdet ihr denken, aber wie kriege ich die zum Laufen.
Nachdem ich das Package in das ich die Komponente gepackt habe, erstellt und installiert habe hole ich sie in ein neues Programm.
Darauf kann ich auf alle Parameter, nicht aber auf die Funktionen zugreifen. Sobald versucht wird eine Funktion aufzurufen (direkt oder über SET) bekomme ich die Linkermeldung a la
"[Linker Fehler] Unresolved external 'ILog::test()' referenced from C:\PROJEKTE\CORE\PACKAGE\TEST\FORMLOGTEST.OBJ"
Kann mir jemand erklären was ich falsch mache?
----
Mit betsem Dank im Vorraus
Christian Rust
-
Ich hasse diesen Fehler

Ich finde, im Grunde sagt der garnix.Probier nal Folgendes:
Mach den Ordner mit deiner Komponente in den Include-Suchpfad von deiner Testform. Und am besten auch den Bibliothekspfad. Weiß aber auch nicht, ob das damit geht, aber probieren kannste ja mal
-
Noch was...
Wo ist die Methode deklariert? Also in der Komponente im Header?
Vielleicht liegts daran.
-
Hallo,
Vielleicht findet der Linker ja die zur Komponente gehörende lib nicht. Ist der Pfad zu der lib in den Projektoptions eingetragen?
-
Hallo wieder!
Erstmal danke für die Antworten.
Die Pfade zum Packages sowie zur Lib habe ich extra nochmal in den Projekt-Optionen angegeben. Keine Änderung. Ob ein Fehler in der Deklaration vorliegt kann ich so nicht sagen aber ich poste einfach mal die ganze Dekl.
class PACKAGE ILog : public TComponent { private: String sLogFileName; // Name und Speicherort der Logdatei String sLangFileName; // Name und Speicherort der Sprachdatei String sLangName; // Name der geladenen Sprache (aus Sprachdatei) int iLangID; // Interne ID der Sprache (aus Sprachdatei) String sFileVersion; // Version der Sprachdatei (aus Sprachdatei) TStringList *Messages; // Meldungsliste TStringList *LangFile; // Inhalt der Datei als Stringlist int FindLineInStrings(TStringList *list, String find); int RemoveRemarkLines(TStringList * list, String remtext); bool CopyPartOfStringList(TStringList *source, TStringList *destination, int start, int end); bool bIsOpen; String TranslateText(String sText); protected: public: __fastcall ILog(TComponent* Owner); void __fastcall SetLanguageFile(String value); void test(); __published: void Add(String sText, String sValue); __property String LogFile = {read=sLogFileName, write=sLogFileName}; __property String LanguageName = { read=sLangName }; __property int LanguageID = { read=iLangID }; __property String LanguageFileVersion = { read=sFileVersion }; __property String LanguageFile = { read=sLangFileName, write=SetLanguageFile, default=' ' }; __property bool Active = { read=bIsOpen }; };----
Bester Dank
Christian
-
wie sieht den die methode test() aus?
was sucht das Add() im published-Bereich?
statt String solltest du AnsiString nehmen, fuehrt weniger zu Verwechslung.
-
Kaum macht mans richtig funktionierts.
void __cdecl test(); void __cdecl Add(String sText, String sValue);...führt zum Ziel.
und das Add() im published war ein verzweifelter Versuch.

----
mfg
Christian
-
Wenn ich jetzt das __cdecl entferne funktioniert es immer noch.
*grübel*
----
mfg
Christian
-
Zufall!
