eferência indefinida a uma função

Estou usando Linux e tenho os seguintes arquivos:

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

A funçãoF1() é declarado emfileB.h e definido emfileB.cpp. Eu preciso usar a função emfileA.c e, por isso, declarei a função como

extern void F1();

emfileA.c.

No entanto, durante a compilação, recebi o erro

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

O que está errado

Obrigado

ETA: Graças às respostas que recebi, agora tenho o seguinte:

No arquivoA.h, eu tenho

#include fileB.h
#include main.h

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

No arquivoA.c, eu tenho

#include fileA.h

No arquivoB.h, eu tenho

extern "C" void F1();

No arquivoB.cpp, eu tenho

#include "fileB.h"

extern "C" void F1()
{ }

No entanto, agora tenho o erro

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

questionAnswers(5)

yourAnswerToTheQuestion