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