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


Anmelden zum Antworten