tsujp
tsujp

Reputation: 1096

Compiling C++ with SDL on Mac OS X Lion

I thought Ubuntu and OS X would have similar interfaces for compiling a C/C++ program with SDL but nothing I am trying, or finding on Google seems to be working.

I have found a solution for Xcode, but I am not using Xcode. I am writing my programs from Sublime Text 2 and compiling via command-line since I prefer it and work much faster that way.

Long story short, I am receiving an array of errors with each attempt and thus far I have copied SDL.framework into my /Library/Frameworks directory.

This is the closest I have gotten to actually compiling:

[ 674 / 174 / 0 ] $ compcpsdl

Undefined symbols for architecture x86_64:
  "_SDL_main", referenced from:
      -[SDLMain applicationDidFinishLaunching:] in ccYYA0Ea.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

Terminal command (i.e. compcpsdl)

g++ -I/Library/Frameworks/SDL.framework/Headers main.cpp SDLmain.m -framework SDL -framework Cocoa

With the following project structure:

Project-Directory/
--- main.cpp
--- SDLMain.m
--- SDLMain.h

And lastly, the following source code:

#include <iostream>
#include <SDL/SDL.h>

using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

It appears I'm doing everything correctly, yet nothing seems to be working.

Any ideas guys?

Upvotes: 1

Views: 2877

Answers (1)

hetepeperfan
hetepeperfan

Reputation: 4411

I Think SDL does sometimes a bit strange stuff with the main function it assumes the mainfunction is defined in one way. Notice that I added int argc and char** argv to the definition of you main function.

Try:

int main (int argc, char** argv)
{
  cout << "Hello World!";
  return 0;
}

I encountered this problem also once and it was quite mystifying. for more info see this stackoverflow question: Why SDL defines main macro?

Upvotes: 3

Related Questions