Sorry, I enabled the notification of the forum and I expected to receive an email on any replies, so this took me a while...
This is good feedback to get, but I need a few more details to understand exactly what was happening. Can you post the linker errors you were getting? Which file had a .c suffix (one in a library or in the sketch)?
Unfortunately, I do not have the old files because I continued with C++ code. As far as I remember, the compiler complained about undefined references. The .c file was in the library, the reference was reported to be missing within the sketch in the "loop" function.
I think you can reproduce this by renaming the Test.cpp from the example library to Test.c - apart from the other errors, you get
o: In function `loop':
undefined reference to `Test::doSomething()'
which is the same I received.
The problem may have to do with the difference in linker behavior between C and C++. A .c file with function named foo() will be compiled into an object file (.o) with a function named foo(). The same function in a C++ file will get "mangled" when it's compiled, the function in the .o file will be called something weird like __Blah_foo. Thus, when a C++ file is linked against an object file generated from a C file, the C++ compiler needs to be told of this fact, so it won't look for mangled function names. An easy way to do this is putting:
#ifdef __cplusplus
extern "C"{
#endif
in the header file corresponding to your .c file before the function declarations. After the function declarations, say:
#ifdef __cplusplus
} // extern "C"
#endif
This is interesting, I didn't know. Thank you!