2013-03-20 3 views
0

cmake에서 플래그를 추가하여 Mac에서 C++ 11에서 작동하도록 지침을 사용하여 SFML2를 컴파일했습니다.SFML이 Mac에서 알 수없는 기호를 제공합니다

g++-4.7 -L/usr/local/lib -std=c++11 -o "Breakout" ./main.o -lsfml-window -lsfml-system -lsfml-graphics 

그것이 밖으로 뱉어 오류를 : 다음과 같이

내 IDE로 Eclipse를 사용하여 라이브러리를 시도 할 때마다

, 나는 알 수없는 문자를 얻을, 그것은 사용하는 명령은

Undefined symbols for architecture x86_64: 
"sf::RenderWindow::RenderWindow(sf::VideoMode, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, sf::ContextSettings const&)", referenced from: 
    _main in main.o 

이 코드를 사용 :

#include <SFML/Graphics.hpp> 

int main() { 
    sf::RenderWindow window(sf::VideoMode(800,600), "window"); 
    return 1; 
} 

문제는, 내 생각, SFML가 연타로 컴파일되어있을 수 있습니다, 그리고 나는 GCC 4.7을 사용하고있다. 나는 Objective C와 Cocoa에 대해 불평하기 때문에 GCC를 사용하여 SFML을 컴파일 할 수 없다. 내가 그것을 피할 수 있다면, 나는이 프로젝트를 위해 Clang으로 바꾸고 싶지 않다. IDE 용 Eclipse를 좋아하지만, Clang 지원은 쓰레기 다.

편집 : Linux에서 모든 것이 정상적으로 작동합니다. 나는 포팅하는 프로젝트를 가지고 있으며, 테스트를 위해 브레이크 아웃 클론을 만들려고했다. 이미 가지고있는 프로젝트는 상당히 커서 가능한 많은 작업을 피하고 싶습니다.

답변

0

해결책을 찾았습니다. SFML 웹 사이트에서 미리 컴파일 된 라이브러리를 사용하면 컴파일이 잘됩니다. 내 질문은, 왜 그런가? 그들은 똑같이 행동하고, 나는 같은 방법을 사용하여 컴파일 된 것으로 추정합니다.

0

C++ 11 지원을 사용하여 SFML을 컴파일하려면 시작 튜토리얼에서 설명한대로 두 가지 도구 (, libC++)가 필요합니다.

LibC++ 및 libstdC++에는 S (T) L의 두 가지 구현이 있습니다. 이것이 바로 문제입니다.

불행히도 마법의 해결책은 없습니다. C++ 11없이 SFML을 사용하거나 g ++ 4.7 및 C++ 11 지원으로 SFML을 컴파일해야합니다. 물론 다른 IDE를 사용할 수도 있습니다.

SFML은 공식 컴파일러를 공식적으로 지원하지 않습니다. 그러나 공식 포럼에서 경험을 공유하고 사용해 볼 수 있습니다.

관련 문제