Utiliser du code C++ dans du code C

Comment utiliser une classe C++ dans du code C?

Créer une classe C++, puis ajouter des fonctions d'interfaçage en extern "C":

//mylibtest.h //////////////////////////////////////////////////////////////////
#ifndef MYLIBTEST_H
#define MYLIBTEST_H
#ifdef __cplusplus

class HelloWorld
{
  public:
  void display();
};

// puis les fonctions d'interfaçge de la classe
extern "C"
{
#endif

  void HelloWorldInit();  // appelle le constructeur
  void HelloWorldDeinit(); // appelle une m�thode publique
  void HelloWorldDisplay(); // appelle le destructeur

#ifdef __cplusplus
}
#endif

#endif

Dans le fichier cpp,
//mylibtest.cpp ////////////////////////////////////////////////////////////////
#include "mylibtest.h"
#include <iostream>

HelloWorld * g_helloWorld;

void HelloWorld::display()
{
     std::cout << "hello" << std::endl;
}

void HelloWorldInit()
{
      g_helloWorld = new HelloWorld;
}

void HelloWorldDeinit()
{
      if (g_helloWorld)   delete g_helloWorld;
}

void HelloWorldDisplay()
{
      g_helloWorld->display();
}
Compiler la classe sous forme d' objet, avec un compilateur C++:

$ g++ -Wall -c mylibtest.cpp


Enfin le programme C:

//main.c ///////////////////////////////////////////////////////////////////////
#include "mylibtest.h"

int main()
{
     HelloWorldInit();
     HelloWorldDisplay();
     HelloWorldDeinit();

     return 0;
}
Compiler le C sous forme d'objet, puis les lier:

$ g++ -Wall -c main.c
$ gcc -Wall -lstdc++ main.o mylibtest.o -o test
$ ./test
hello


Plus d'infos ici