Bonjour tout le monde,

Pour un devoir pour mon ecole je dois produire un programme sous forme de bibliotheque static et dynamic avec le meme Makefile.

Mon probleme est sur la conception et utilisation de la bibliotheque dynamique.

Dans mon source en .c j'ai mis un devant la fonction que je veux partage (lors du prototypage de cette fonction)

dans mon Makefile j'ai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
OBJ = $(SRC:.c=.o)
 
CFLAGS  =   -W -Wall -fPIC -c
 
compil: $(OBJ)
 
dynamic: compil
        @echo "create dynamic library"
        @gcc -shared -o $(NAME).so $(OBJ)
et mon fichier .c pour lire ma bibliotheque est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
  void *handle;
  double (*my_library)(char *fmt, ...);
  void *error;
 
  handle =  dlopen("./my_library_i386-Darwin.so", RTLD_NOW);
 if (!handle)
   {
     printf("error %s", dlerror());
     exit;
   }
 my_printf = dlsym(handle, "ma_fonction_en_mode_extern");
 error = dlerror();
 if (error != NULL)
   {
     printf("error 2 %s", error);
     exit;
   }
 my_library("titi");                                                                                                                                
 dlclose(handle);                                                                                                                                   
}
Comme vous auriez pu le remarquez sur le nom de ma bibliotheque dynamique (my_library_i386-Darwin.so). Je travaille sous Mac Leopard.
Je pense qu'il manque un lien ou autre.

Le probleme constate est du type:
pas de symbole trouve dans my_library_i386-Darwin.so