Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linker Errors on OS X due to SFML framework

Tags:

c++

linker

sfml

This may seem like quite a 'noob' question: I've downloaded SFML-1.6 for Mac and I have placed the frameworks into my /Library/Frameworks folder. After trying to compile an example SFML application I get linker errors for pretty much every call I make to SFML. I'm not sure what I am missing? I've not got much experience with OSX and Frameworks so perhaps I need to link to the libraries by some other method?

Output, if it helps:

Undefined symbols for architecture x86_64:
  "sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)", referenced from:
      osx_init::init() in osx_init.o
  "sf::RenderWindow::RenderWindow(sf::VideoMode, std::string const&, unsigned long, sf::WindowSettings const&)", referenced from:
      osx_init::init() in osx_init.o
  "sf::RenderTarget::PreserveOpenGLStates(bool)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::Image()", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::LoadFromFile(std::string const&)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Color::Color(unsigned char, unsigned char, unsigned char, unsigned char)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Sprite::Sprite(sf::Image const&, sf::Vector2<float> const&, sf::Vector2<float> const&, float, sf::Color const&)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::GetWidth() const", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::GetHeight() const", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::GetPixelsPtr() const", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::~Image()", referenced from:
      osx_init::init() in osx_init.o
  "sf::Clock::Clock()", referenced from:
      osx_init::init() in osx_init.o
  "sf::Window::IsOpened() const", referenced from:
      osx_init::init() in osx_init.o
  "sf::Window::GetEvent(sf::Event&)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Window::Close()", referenced from:
      osx_init::init() in osx_init.o
  "sf::Clock::GetElapsedTime() const", referenced from:
      osx_init::init() in osx_init.o
  "sf::Unicode::Text::Text(char const*)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Font::GetDefaultFont()", referenced from:
      osx_init::init() in osx_init.o
  "sf::String::String(sf::Unicode::Text const&, sf::Font const&, float)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Drawable::SetPosition(float, float)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Drawable::SetColor(sf::Color const&)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Window::Display()", referenced from:
      osx_init::init() in osx_init.o
  "sf::RenderWindow::~RenderWindow()", referenced from:
      osx_init::init() in osx_init.o
  "vtable for sf::Sprite", referenced from:
      sf::Sprite::~Sprite() in osx_init.o
  "sf::Drawable::~Drawable()", referenced from:
      sf::Sprite::~Sprite() in osx_init.o
      sf::String::~String() in osx_init.o
  "vtable for sf::String", referenced from:
      sf::String::~String() in osx_init.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
like image 496
chrisburke.io Avatar asked Dec 17 '11 18:12

chrisburke.io


2 Answers

You'll need to add two flags to the Linker options:

-framework SFML

This tells the linker to use the framework in /Library/Frameworks/SFML.framework

In addition, you have to include -lsfml-whatever for each library you're using:

-lsfml-system
-lsfml-window
-lsfml-graphics
-lsfml-audio
-lsfml-network

So, a complete linker line might look like:

g++ -framework SFML -lsfml-graphics -lsfml-audio -lsfml-window -lsfml-system

This is not immediately obvious from the Mac OSX SFML build docs, but you do need both.

like image 103
nateware Avatar answered Oct 23 '22 16:10

nateware


It seems your problem could also be answered from a experienced developer on OS X but since it's a SFML related question too, I'd advice you to get in contact with the developer (or at least he ported the whole thing) of SFML for OS X: hirua. (Or is he here on Stackoverflow too?)

Additionally there is a instruction for building (and using) the SFML 2.0 library in the forum. Maybe it helps too for your 1.6 version.

(I'd like to add this just a comment but it seems my reputation isn't that great (yet))

like image 2
Lukas Avatar answered Oct 23 '22 14:10

Lukas