Difficultés pour faire de la compilation séparée en C
Bonjour,
J'ai voulu passer à la compilation séparée (j'utilise le compilateur Borland C++4.2,sous Windows),alors que jusqu'à présent je n'ai fait que de la compilation unique.Mais j'ai des problèmes à l'exécution?Comme ces problèmes semblent difficiles à saisir d'emblée,je fais le petit test suivant.
Je définis mon source en 2 fichiers.
Un premier fichier a.cpp contient :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include <stdio.h>
FILE* fi;
int n;
extern int d();
int j;
int OwlMain (int,char *[])
{
fi=fopen("file.txt","r");
n=0;
j =d();
fclose(fi);
return 1;
} |
Le second fichier d.cpp contient:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <stdio.h>
extern FILE* fi;
extern int n;
int d()
{
char tc[1000];
char a,b,c;
int i;
for (i=0;i<1000;i++)
{
tc[i]=0x000F;
}
fscanf(fi,"%d %d %d",&a,&b,&c);
puts ("debut du programme");
return n+10;
} |
La compilation et le link sont corrects.Mais à l'exécution,quand il arrive sur fscanf(fi,"%d etc..,il soulève l'exception :General Protection exception,processor fault.Si on place puts avant dans le code,il génére la même exception sur puts.Ces exceptions ne sont pas soulevées si on compile en un seul source.Je voudrais savoir ce qui se passe.Est-ce une question de bibliothèques qui ne sont pas les mêmes quand on passe en compilation séparée,et qui pour le coup auraient des erreurs?Est-ce un problème d'adressage,ou autre ?
Quelqu'un est-il intéressé par le problème,a-t-il ces problèmes pour compiler séparément,peut-il compiler séparément avec d'autres compilateurs ?
Problème résolu (apparemment) : réponse à 3DArchi
Bonjour,
Je pense avoir trouvé la cause de mon problème d'exception.Quand on crée une application avec Borland,l'application est gérée comme un projet,dans lequel chaque source est déclarée par un noeud.Si on compile avec deux sources a.c et b.c,chaque source est déclarée par un noeud,ce que je ne faisais pas,puisque ne faisant pas de compilation séparée.
Il n'y a pas apparemment de problème de langage C.