I'll take a stab. I haven't written code for Arduino, but I've done a lot of C and C++ programming. It would help if I actually saw your errors, but nonetheless.
The main thing you need to always remember when using C++ with C code is that your C++ code needs functions declared with "extern "C"" if you want C code to be able to link against the C++ code. The "extern "C"" is what tells the C++ compiler that I'm creating linkable code for C files or I'm using code from C files. So all your functions in the library API header should correlate with a function in the source file defined liked "extern "C" void dosomething()". If you're trying to use classes in C++, remember that C code can't call it, you'll need to create functions (extern "C") to access the object. Now, if your C code is compiled with a C++ compiler, then don't worry about "extern "C"".
If you want to call C code inside your C++ code, then you need to wrap the C header with a construct like this:
#ifdef ___cplusplus
extern "C" {
#endif
///all my C function declarations... yada yada
#ifdef __cplusplus
} //end extern "C"
#endif
If you working in C++, don't use a lot a #defines unless you're creating compile-time flags like "DEBUG" or "VERSION2" to create special sets of code. Otherwise use "const int/char/float" for number defines for safe type checking. The compilers are usually smart enough to optimize these out, so they wind up in ROM/code space (depends though). Also, don't create MACROS, use inline functions. Also, don't always follow convention when programming if it's stupid such as using a lot of macros and number defines in C++. The same thing applies to C99 version of C, it has added things like inline functions and consts from C++. The industry realizes how much buggy code and hard to maintain code comes from overuse of the preprocessor language.
Eclipse usually stores the obj files in a directory under your project. If you're doing a "Debug" build, then it's located under the "Debug" folder under your project folder. If you're doing a "Release" build, then look under "Release", etc. Normally a clean build just works for me in Eclipse, so I don't know what's going wrong with your setup. I guess make sure you're not creating precompiled headers.
Best Answer
It depends on what your definition of "sound" is. If you just want it to beep, than that's easy. If you want it to start playing your favorite song, that's a bit more challenging.
If you want to use a Piezo speaker to make simple sounds:
For just tones you can look at here on Arduino's website. You wouldn't need to store the sound file, you would just have the Arduino generate the sounds at runtime.
From Arduino's website. It seems fairly easy to implement if needed for this use.
If you need it to play a song or sound file:
I highly don't recommend playing sound files on Arduino. A couple of things:
Another alternative would be to have multiple Piezo speakers, figure out how to have a computer "dissect" the sound files, and send it over a high baud rate serial communication. I don't think that would work.
The easiest thing would to buy a $10 MP3 player and rig it with $3 servos from eBay to push the buttons and have some cheap speakers.
EDIT: You could also do a similar thing to this, it is a coffee maker, but the information is good. It shows you how to modify the buttons to "push" them with Arduino.
EDIT: Found some shields:
There are tons more that are more expensive, but these are pretty good for their price. The tutorial for Audafruit has it playing some sound so you can hear the quality.
It is easy, but costly and/or you have to get creative if you don't want to buy a shield. Good luck!