Cpp Funtion in C



  • Hi Leute. Folgendes Problem.
    Habe Klasse A mit Funktion a in Cpp. In meinem C Code rufe ich eine (Wrapper)Funktion auf, die den Konstuktor von A aufruft und einen Zeiger auf mein Objekt zurückgibt. Den speicher ich mir im C Code als void *, was nicht gerade typsicher ist und auch zu Problemen führt (kann aber nicht als A abspeichern oder casten, weil die Klasse in C ja nicht bekannt ist).
    Nun rufe wieder eine Wrapperfunktion auf, die als Parameter meinen void Pointer bekommt und a mit diesem Objekt von A ausführt.
    Scheisse ist nur, dass der Compiler (von Visual C++) Typannahmen trifft, die nicht stimmen und das Ergebnis verfälschen.
    Was tun?

    Gruss Euroeddi



  • Hallo,
    sind deine Wrapper-Funktionen extern "C" deklariert? Übersetzt du main mit deinem C++ Compiler?

    Kurz: Folgst du dem hier: http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html



  • Wenns ein reiner AnsiC Compiler ist => keine C++ Klassen möglich 😕



  • Knuddlbaer schrieb:

    Wenns ein reiner AnsiC Compiler ist => keine C++ Klassen möglich 😕

    Er wrappt die Klasse bzw. deren Objekte hinter einem C-Interface. Das ist schon ok.

    In diesem Fall hast du Klassen und Objekte, wenn du mit C++ arbeitest, bildest die aber auf ein ADT ab, wenn du mit C arbeitest.



  • War gerade Essen. Mmmh, lecker Chickennuggets.
    Habe die Funktionen als extern "C" bereits deklariert. Benutze einen C++ Compiler, habe keine main Methode, weil ich eine dll erstelle.
    Der Link wird mir sicher helfen, vielen Dank!
    Have fun
    Euroeddi


Anmelden zum Antworten