|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 45 ![]() |
Bonjour,
j'ai écris une librairie en c++ avec des classes aux fonctions privées et publiques. Des fonctions privées font appel à des librairies. Et les fonctions publique sont une sorte de wrapper aux fonctions privées La compilation de la librairie se passe sans problème g++ -fPIC.... g++ shared, soname.... Mais lorsque j'essaye de compiler un programme utilisant ma librarie, cela ne fonctionnera que si je lui indique ou trouver les librairies qui sont utilisées que dans les fonctions privées de mes classes.... Comment faire du coup pour faire en sorte que seulement les fonctions publique soit accessible, depuis un programme tier ? L'utilisation de "extern C" aiderai elle ? je ne l'utilise pas car le programme appelant est aussi en c++ je précise que les structures/objet spécifiques aux autres librairies ne sont jamais utilisées dans les méthodes publiques.... merci pour vos réponses |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Quand tu batis ta bibliotheque, indiques les bibliotheques dont elle depend avec -l.
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 45 ![]() |
Bonjour,
C'est en effet ce que je fais, lorsque je batis ma librairie j'indique les librairies nécessaire avec le -l Ce que j'aimerais c'est que lorsque je construis mon appli utilisant ma librairie je n'ai pas besoin d'indiquer le -l des autres librairies |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Bizarre:
Code :
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 45 ![]() |
Pourquoi
$ g++ -shared -o liblib1.so lib1.o te compiles bien alors qu'elle devrait dépendre de liblib2 et donc devrais nécessiter -llib2 ? |
|
|
00
|
|
|
#6 | ||
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 45 ![]() |
Maybe my problem is a little bit different...it's more like this :
Code :
|
||
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Tu peux extraire un exemple complet? Je ne me souviens pas avoir vu une erreur du genre: undefined reference to `struct specific_to_lib2'
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 45 ![]() |
Le message n'indique pas d'erreur sur `struct specific_to_lib2'
mais sur `tada_a_struct_from_lib2' Je vous colle l'erreur exacte demain si vous pensez que cela change quelque chose Une chose que je ne comprends pas très bien : sur windows on définit les méthodes/classes à exporter avec _declspec(dllexport) pourquoi n'est il pas possible de faire la même chose avec g++ ? |
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 45 ![]() |
Yes it says
Code :
undefined reference to `specific_structure_from_lib2'
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : novembre 2005 Messages : 4 970 ![]() |
Aucune idee. Je te suggere a nouveau d'extraire un exemple minimal (ou tu as enleve tout ce qui n'est pas necessaire pour reproduire le probleme) et complet (ou tu donnes explicitement tout ce qui est necessaire pour reproduire le probleme) et de nous le donner.
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com