Référence non définie à une fonction

Je suis sous Linux et j'ai les fichiers suivants:

main.c, main.h
fileA.c, fileA.h
fileB.cpp, fileB.h

La fonction F1() est déclaré dans fileB.h et définis dans fileB.cpp. J'ai besoin d'utiliser la fonction de fileA.c, et j'ai donc déclaré la fonction que

extern void F1();

dans fileA.c.

Cependant, lors de la compilation, j'ai obtenu l'erreur

fileA.c: (.text+0x2b7): undefined reference to `F1'

Quel est le problème?

Merci.

ETA: Merci pour les réponses que j'ai reçues, j'ai maintenant le suivant:

Dans fichiera.h, j'ai

#include fileB.h
#include main.h

#ifdef __cplusplus
extern "C" 
#endif
void F1();

Dans fichiera.c, j'ai

#include fileA.h

Dans fichierb.h, j'ai

extern "C" void F1();

Dans fileB.cpp, j'ai

#include "fileB.h"

extern "C" void F1()
{ }

Cependant, j'ai maintenant l'erreur

fileB.h: error: expected identifier or '(' before string constant

OriginalL'auteur Rayne | 2011-06-21