Ошибки компоновщика в OS X из-за структуры SFML - PullRequest
5 голосов
/ 17 декабря 2011

Это может показаться довольно «нубским» вопросом: я скачал SFML-1.6 для Mac и поместил фреймворки в мою папку / Library / Frameworks. После попытки скомпилировать пример SFML-приложения я получаю ошибки компоновщика практически при каждом вызове SFML. Я не уверен, что мне не хватает? У меня нет большого опыта работы с OSX и Frameworks, поэтому, возможно, мне нужно связать с библиотеками каким-либо другим способом?

Вывод, если это поможет:

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)

Ответы [ 2 ]

6 голосов
/ 08 мая 2012

Вам нужно будет добавить два флажка в опции компоновщика:

-framework SFML

Это говорит компоновщику использовать каркас в /Library/Frameworks/SFML.framework

Кроме того, вы должны включить-lsfml-whatever для каждой используемой вами библиотеки:

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

Итак, полная строка компоновщика может выглядеть следующим образом:

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

Это не сразу видно из сборки Mac OSX SFMLдокументы, но вам нужны оба.

2 голосов
/ 17 декабря 2011

Кажется, что на вашу проблему также можно ответить от опытного разработчика для OS X, но так как это тоже вопрос, связанный с SFML, я бы посоветовал вам связаться с разработчиком (или, по крайней мере, он перенес все это) SFML для OS X: hirua . (Или он тоже здесь, на Stackoverflow?)

Кроме того, есть инструкция для сборки (и использования) библиотеки SFML 2.0 на форуме. Возможно, это поможет и для вашей версии 1.6.

(Я хотел бы добавить это просто комментарий, но, похоже, моя репутация не так уж велика (пока))

...