création d'une API
Le
xdunat
Bonjour,
Je souhaite créer une API (sous AIX) fournissant 2 fonctions :int
f1(arg1); et int f2(arg1);
Ces deux fonctions sont écrit dans un fichier api.c (et api.h).
Le problème c'est que c'est deux fonctions sont assez conséquentes,
et donc font appel à d'autres sous fonctions défini dans source.c (et
le fichier d'entete source.h).
Le problème c'est que si je crée une librairie de la manière
suivante :
ar r api api.o source.o
et
ranlib api
Lorsque je livrerai la librairie libapi on pourra utiliser les
fonctions f1, f2 mais aussi mes sous fonctions. Au départ j'avais tout
mis dans le même fichier et mis les sous fonctions comme "static",
mais le fichier devient trop grand.
Comment puis-je faire pour que seul les fonctions souhaitées soit
réutilisables ? Au départ je pensais fournir que le api.h, comme ça
les utilisateurs ne connaissant pas les autres, à priori ils ne les
utiliseront pas. Mais se n'est pas très rigoureux.
Je souhaite créer une API (sous AIX) fournissant 2 fonctions :int
f1(arg1); et int f2(arg1);
Ces deux fonctions sont écrit dans un fichier api.c (et api.h).
Le problème c'est que c'est deux fonctions sont assez conséquentes,
et donc font appel à d'autres sous fonctions défini dans source.c (et
le fichier d'entete source.h).
Le problème c'est que si je crée une librairie de la manière
suivante :
ar r api api.o source.o
et
ranlib api
Lorsque je livrerai la librairie libapi on pourra utiliser les
fonctions f1, f2 mais aussi mes sous fonctions. Au départ j'avais tout
mis dans le même fichier et mis les sous fonctions comme "static",
mais le fichier devient trop grand.
Comment puis-je faire pour que seul les fonctions souhaitées soit
réutilisables ? Au départ je pensais fournir que le api.h, comme ça
les utilisateurs ne connaissant pas les autres, à priori ils ne les
utiliseront pas. Mais se n'est pas très rigoureux.

Poser une question


Cette question n'a rien à voir avec le C, mais est uniquement liée à ta
chaîne de compilation. Il faudrait poster ta question sur un NG lié à ton
système.
Tu mets toutes tes fonctions annexes dans des sources séparés et tu les
places dans une bibliothèque. Ensuite tu prends ton source avec tes 2
fonctions et tu fais une édition de lien partiel avec ta bibliothèque. Il ne
restera en extern que tes fonctions. Regarde la doc de ton linker.
--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
j'ai fini par trouver comment le faire.
Ben en fait, ce n'est pas ça. Toutes mes fonctions sont visibles.
Si le forum n'est pas le bon pour ma question, ou dois-je poster ?
C'est impossible mon vieux, au moins mon linker ne fais pas ca,
et je vois pas comment ca pourrait marcher.
Si les sous-fonctions sont invisibles, comment les trouver alors
pour fair l'edition de liens?
jacob
http://www.cs.virginia.edu/~lcc-win32
En fait, ça ne fonctionne toujours pas.
J'ai bien mis les fichiers annexes dans une bibliothèque
(libannexe.a).
Je compile mes sources avec :
cc -o api.o -lannexe -c api.c
Mais les fonctions annexes sont toujours utilisables avec api.o.