funktion aus DLL will nicht
-
Also ich habe eine DLL wo eine Funktion drinsteht:
__declspec (dllexport) void einfuegen(String text, TRichEdit *edit, TColor Farbe, bool fett, bool unterschrichen,int size) { edit->Lines->Insert(0,text); edit->SelStart = 0; edit->SelLength = text.Length(); edit->SelAttributes->Color = Farbe; edit->SelAttributes->Size = size; if (fett == true && unterschrichen == false) edit->SelAttributes->Style =TFontStyles()<< fsBold; if (unterschrichen == true && fett == false) edit->SelAttributes->Style =TFontStyles()<< fsUnderline; if (unterschrichen == true && fett == true) edit->SelAttributes->Style =TFontStyles()<< fsUnderline << fsBold; }
Beim erzeugen gibt er keine Fehler.
Nun gehe ich in meine Anwendung und mache 'Projekt hinzufügen' und wähle die lib der DLL aus. Auserdem schreibe ich in die header-Datei:__declspec (dllexport) void einfuegen(String, TRichEdit, TColor, bool, bool, int);
und zu guter letzt versuche ich die Funktion so aufzurufen:
einfuegen(Edit1->Text, News, clRed, Check1->Checked, Check2->Checked, 20);
Aber dann kommt dieser Error:
[C++ Fehler] start.cpp(19): E2459 Klassen im VCL-Stil müssen mit dem Operator new erstellt werden
Was muss ich machen, damit der Error weg geht?
Stratege993
-
Stratege993 schrieb:
__declspec (dllexport) void einfuegen(String, TRichEdit, TColor, bool, bool, int);
Interessanterweise unterscheidet sich diese Deklaration in einem kleinen, aber entscheidenden Detail von der Funktionssignatur in deiner Definition
-
ok jetzt gehts. Aber davor hatte ich es auch versuch, und da kam nen andere Fehler. Für alle anderen hier die Lösung:
__declspec (dllexport) void einfuegen(String text, TRichEdit *edit, TColor Farbe, bool fett, bool unterschrichen,int size)
Und wenn ich mal in meinem Buch genauer hinguguckt hätte wärs bei mir auch schneller gegangen.
Stratege993