Stephane,
It sounds like your falling foul of C++ name mangling (or decorated names), this is where C++ compilers encode the names of C++ symbols to include type information in the name (for type safe linking) and can cause unresolved references.
This is a common problem when you are mixing C and C++ source code.
To see if this is causing your problem then you can wrapper your prototype definitions in the following statement, forcing the compiler to generate undecorated names.
// Wrap header files to prevent mangling.
extern "C"
{
#include "header1.h"
#include "header2.h"
}
// Wrap single prototypes
extern "C"
{
void SampleFunction(void);
}
HTH
Neil