Je souhaite utiliser du code C++ depuis une application en C, mais il semblerait que j'aie manqué quelque chose car l'édition de lien ne fonctionne pas.

Fichier hello.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
class Hello {
public:
  void print(){
    std::cout<<"Hello world\n";
  }
};
 
extern "C" {
  void Hello_print(){
    Hello().print();
  }
}
compilé avec la commande : g++ -c hello.cpp

Fichier main.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
extern void Hello_print();
 
int main(){
  Hello_print();
}
compilé avec la commande : gcc main.c hello.o
message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Undefined symbols for architecture x86_64:
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int)in hello.o
  "std::ios_base::Init::~Init()", referenced from:
      ___tcf_0 in hello.o
  "std::cout", referenced from:
      Hello::print()     in hello.o
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
      Hello::print()     in hello.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Merci d'avance.