Bonjour,
je developpe une application C ou j'utilise une bibliotheque developpee appele "video" en C avec un partie de code C++.
Lorsque je compile avec la bibliotheque dynamique (library libvideo.so), tout se passe bien mais cette derniere depend de bibliotheques de video (v4l, raw1994, ...) et selon la machine ou je suis ces dernieres peuvent changer de version et je dois donc generer la bibliotheque "video" sur chaque machine.
Je prefererai utiliser la bibliotheque statique (libvideo.a) et avoir une seule bibliotheque que je transporte avec mon application.
Cependant lorsque j'essaie de compiler avec cette derniere, il me sort une liste d'erreur car il ne comprends pas les fonctions C++ (ce qui est normale vu que je compile en C).
Voici le debut du message d'erreur :
Y a-t-il une option de compilation qui manque dans le makefile de mon programme lors de la compilation de la bibliotheque video ?/moncompte/projet/lib/sta/libvideo.a(video.o): In function `~Video':
/moncompte/projet/src/video.cpp:45: undefined reference to `operator delete(void*)'
/moncompte/projet/src/video.cpp:45: undefined reference to `operator delete(void*)'
/moncompte/projet/src/video.cpp:45: undefined reference to `operator delete(void*)'
/moncompte/projet/lib/sta/libvideo.a(video.o).rodata._ZTV5Video[vtable for Video]+0x10): undefined reference to `__cxa_pure_virtual'
/moncompte/projet/lib/sta/libvideo.a(video.o).rodata._ZTI5Video[typeinfo for Video]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'
/moncompte/projet/lib/sta/libvideo.a(video.o).eh_frame+0x11): undefined reference to `__gxx_personality_v0'
/moncompte/projet/lib/sta/libvideo.a(video_v4l.o): In function `~VideoV4L':
Dans le code pour la bibliotheque "video" :
il a ete employe pour le .h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #ifdef __cplusplus class Video{ ... }; /* For C user */ extern "C"{ #endif /* __cplusplus */ Video_c* videoNew(...); #ifdef __cplusplus } #endif /* __cplusplus */
Mais rien pour le .cpp
c'est peut etre la qu'il manque quelque chose?
Merci de votre aide
Partager