I am using C++ with the SDL Cocoa and Foundation framework on my mac os x. I get the following error
Undefined symbols for architecture x86_64:
\"_SDL_main\",
I bet your main
function signature is incorrect. You use:
int main(int argc, const char * argv[])
^^^^^
but SDL_main.h wants
int main(int argc, char *argv[])
Why?
You see, SDL does something really horrific when compiling: It renames your main
function to SDL_main
, injecting its own main function which, in turn, calls yours.
Note that if this doesn't work, then you may be compiling with wrong flags. To be sure, get the flags by typing:
$ sdl-config --cflags --libs
For more information, see Simply including SDL header causes linker error
I had the same problem, even though my main signature was correct. I Found the answer here: SDL in XCode 4.3.2 SDLMain.o undefined symbols
Turned out the problem was that I added SDLMain.m and SDLMain.h (according to a suggestion on the libSDL website about OS X frameworks) to an existing SDL project which messed up with main. Bottom line is that you don't need those files just because you are using Cocoa -- SDL's own test apps don't use it either and run just fine on OS X.