Bonjour,
Si tu veux linker une librairie C++ avec du C, tu peux faire une interface non objet :
j'ai une classe Foo avec le header suivant :
Code C/C++ :
class Foo{
public:
int a;
Foo();
void print();
};
et l'implémentation suivante :
Code C/C++ :
#include <iostream>
#include "foo.hh"
Foo::Foo() : a(0) { }
void Foo::print(){
std::cout << a << std::endl;
}
je peux faire l'interface suivante :
Code C/C++ :
#include "foo.hh"
extern "C" {
void* mk(){ return new Foo(); }
void print( void* a ){
Foo *b = static_cast<Foo*>(a);
b->print();
}
}
et le programme c suivant :
Code C/C++ :
extern void* mk();
extern void print( void*a);
int main(){
print(mk());
return 0;
}
pour compiler, il me suffit de faire :
gcc interface.o test.o foo.o -lstdc++
Bref, ces deux langages se linkent, c'est donc inutile de convertir le code.
Cordialement,
Maxime