Problèmes avec des librairies (.a et .so)
Bonjour,
Je travaille avec le compilateur gcc et j'ai une bibliothéque libx.so dont la description des fonctions ne m'a pas été donnée. J'ai le respectif fichier x.h, à partir duquel je peux savoir comment appeler ses fonctions. Par exemple, on suppose qu'il y a dedans la fonction:
int fonc (int a, int b);
Et qu'elle me rend la valeur a + b.
Mon but c'est de créer une bibliothèque intérmediaire (midd.so ou midd.a) capable d'appeler cette fonction dedans une fonction de même nom:
//fichier midd.h
#include <x.h>
int fonc(int a, int b);
//fichier midd.c
#include <midd.h>
int fonc(int a, int b){//fonction fonc de même nom
int c;
c= fonc(a,b); //fonction fonc décrite par le fichier libx.so
c++;
return (c);
}
et dans le fichier de l'application:
#include</home/koeppl/midd.h>
#include<stdio.h>
int main(){
int a;
printf("result %d",fonc(1,3));
a= getchar();
return 0;
}
J'arrive bien à compiler et à linker quand je change le nom de la fonction fonc placée en midd.h, midd.c et en main. Exemple, si je change son nom de fonc pour fonc1, ça fait une fonction fonc1 appélée depuis main qui appele la fonction fonc, décrite en x.h/ x.so. Cela marche correctement. J'utilise les commandes décrites en http://www.trustonme.net/didactels/154.html .
Cependant si j'emploi le même nom pour la fonction fonc, j'ai un bug dans le linkage ( quand je fais gcc -o appli appli.c midd.a ou gcc -o appli appli.c midd.so, puisque j'ai déjà essayé de créer midd.a et midd.so).
Question 1 : Est-il possible de faire des bibliothèques linkées à d'autres bibliothèques? Comment? :? (sachant que souvent j'ai le problème de "erreur de segmentation" quand je fais ça...):(
Question 2 : Si oui, je pourrais appeler une fonction qui dedans appele une autre fonction de même nom, placée dans une autre bibliothèque? Comment? :?
Merci beaucoup, j'ai passé pas mal de temps au dessus de ça...
André:P
Quelques problèmes dans la compilation
Bonjour,
En fait j'ai trouvé la réponse sur les sites web http://www.linux-france.org/article/memo/node113.html et http://ilay.org/yann/articles/dlfcn/ , qui m'ont aidé à comprendre mon problème.
Merci,
André