a general and cross platform method is,
1. modify your image or any of other binary format file in to base 64 encoded text file
2. use a byte array, and include the base 64 encoded text file, a normal #include should be able to work if nothing wrong in format, etc.
3. when app started, try to get the bytes from the base 64 encoded string
(2) Use something to create a source file with an array of bytes containing your resource data, which you can compile and link into your application normally.
(3) Some compilers come with methods to help handle resources.
objcopy seems to be the most elegant of the options, as you just specify a variable in your program to access the file's contents. No file streams, no platform-specific resources, just a variable. The problem with this is that not all platforms have an objcopy-like utility, though it's not impossible to make one yourself (maybe cygwin provides it for windows?).
It isn't a variable -- it's a constant address to loaded program data. It's about the same thing as option (2) I gave above, just much more friendly to use. (And it avoids duplicating data into really big text files.)