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 :compilé avec la commande : g++ -c 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(); } }
Fichier main.c :compilé avec la commande : gcc main.c hello.o
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 extern void Hello_print(); int main(){ Hello_print(); }
message d'erreur:Merci d'avance.
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
Partager