All the c functions needs to start with extern c keyword, For further informaiton u can read about name mangling in c and c++, a good online tutorial about c and c++ may contain about it.
Don't try and call a C++ call directly by trying to guess it's name. Mangling is there for a reason, it is so you don't do something that will become incompatible in the future. Using the
extern "C" directive will stop mangling from occuring, but can be used for only non-member functions.
This discussion is also on thread
http://www.thescripts.com/forum/thread215673.html stating amonst other things that the main() function should be in C++ (unsure if that is true, as the linker should take care of that) and what point would there be, just convert the C files to C++ files, and if using both iostream and stdio, to use sync_with_stdio()
To be quite precise, here is what the illustrious Mr. Stroupstrup says:
"C and C++ I/O can be mixed on a per-character basis. A call of
sync_with_stdio() before the first stream I/O operation in the
execution of a program guarantees that the C-style and C++-style I/O
operations share buffers. A call of sync_with_stdio(false) before the
first stream I/O operatio prevents buffer sharing and can improve I/O
performance on some implementations."
(Stroustrup, B. The C++ Programming Language, Special Edition, p651)
Hope this helps.
Adrian