Hi, ich hab mein eigenes Framework programmiert, und bastle gerade Python bindings dafür. diese benötigen jedoch C funktionen(= mit C Signaturen(!)) und folglich würde es mich Interessieren, wie ich C++ Klassen(!!) aus C heraus aufrufe.
...anyone?
C++ aus C heraus aufrufen
- Xin
- nur zu Besuch hier
- Beiträge: 8861
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: C++ aus C heraus aufrufen
Achtung(!): Diese Antwort ist nicht unbedingt die einzig glücklichmachende Lösung, da ich mich mit Python-Bindings nicht gut genug auskenne.Jside hat geschrieben:Hi, ich hab mein eigenes Framework programmiert, und bastle gerade Python bindings dafür. diese benötigen jedoch C funktionen(= mit C Signaturen(!)) und folglich würde es mich Interessieren, wie ich C++ Klassen(!!) aus C heraus aufrufe.
Entweder indem Du die Signaturen abschreibst, was eher unschön ist, oder Du Wrapperklassen erzeugst, die entsprechende C-Funktionen aufrufen, was auch nicht wirklich schön ist, aber auch noch funktioniert, falls GCC die Methoden mal anders benennt oder Du VC++ benutzen willst.
Code: Alles auswählen
// wrapper.h
extern "C" int NewMyClass();
extern "C" void FuncCall( int this );
//wrapper.c
int NewMyClass
{
return reinterpret_cast< int >( new MyClass() );
}
void FuncCall( int this )
{
reinterpret_cast< MyClass * >( this )->FuncCall();
}
Das hier ist keine Versteigerung.Jside hat geschrieben:...anyone?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: C++ aus C heraus aufrufen
Ich grab diesen Thread mal wieder aus.
Die Wunderbibliothekensammlung Boost bietet auch hierfür eine elegante Lösung. Dazu könntest du dir mal Boost.Python anschauen
Die Wunderbibliothekensammlung Boost bietet auch hierfür eine elegante Lösung. Dazu könntest du dir mal Boost.Python anschauen
Physics is like sex: sure, it may give some practical result, but that's not why we do it.
(Richard P. Feynman)
(Richard P. Feynman)
Re: C++ aus C heraus aufrufen
Genau boost::python oder andere Wrapper wollte ich nicht benutzen, da insbesondere boost nur Probleme auf einer Platform, die ich benutze macht...AnGaiNoR hat geschrieben:Ich grab diesen Thread mal wieder aus.
Die Wunderbibliothekensammlung Boost bietet auch hierfür eine elegante Lösung. Dazu könntest du dir mal Boost.Python anschauen