C++ aus C heraus aufrufen

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design

C++ aus C heraus aufrufen

Beitragvon Jside » Fr Mär 05, 2010 11:39 am

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?
Mein Keller Rechenzentrum:
Vernetzung: Cisco Series 800 ; Sempre 24Port 100Mbit Switch -> G.SHDSL Standleitung
Zurzeitig sind 3 Server online.
Benutzeravatar
Jside
 
Beiträge: 333
Registriert: Di Nov 11, 2008 12:56 am

Re: C++ aus C heraus aufrufen

Beitragvon Xin » Fr Mär 05, 2010 12:17 pm

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.

Achtung(!): Diese Antwort ist nicht unbedingt die einzig glücklichmachende Lösung, da ich mich mit Python-Bindings nicht gut genug auskenne.

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();
}


In Python deklarierst Du dann eine Klasse, die nur das int-Handle hält und bei der Python-Memberfunkion FuncCall entsprechend die C-Funktion FuncCall(int) ruft, die dann die Methode der C-Klasse ruft.

Jside hat geschrieben:...anyone?

Das hier ist keine Versteigerung.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich leiste keinen Support zu Programmierfragen per Mail oder PN - dafür ist das Forum da.
Benutzeravatar
Xin
nur zu Besuch hier
 
Beiträge: 3356
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin


Zurück zu Algorithmen und Konzepte

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast