SFML在mac上给了我未知的符号

时间:2013-03-20 19:45:50

标签: c++ gcc symbols sfml

我使用说明编译了SFML2,以便在mac上使用C ++ 11,方法是在cmake中添加标志。

每当我尝试使用Eclipse作为我的IDE时,我会得到未知符号,它使用的命令如下:

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

它吐出的错误是:

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是用Clang编译的,我使用的是GCC 4.7。我无法使用GCC编译SFML,因为它抱怨Objective C和Cocoa的东西。如果我可以避免它,我不想转换到Clang这个项目,因为我喜欢Eclipse的IDE,但是Clang支持是垃圾。

编辑:我差点忘了,Linux上的一切正常。我有一个项目,我正在移植,我试图做一个突破克隆来测试。我已经拥有的项目非常庞大,我希望避免尽可能多的工作。

2 个答案:

答案 0 :(得分:0)

我找到了解决方案。如果我使用SFML网站上的预编译库,它编译得很好。我现在的问题是,为什么?它们的行为相同,我认为它们是使用相同的方法编译的。

答案 1 :(得分:0)

要使用C ++ 11支持编译SFML,您需要两个工具(如入门教程中所述):clang with libc ++。

Libc ++和libstdc ++有两种不同的S(T)L实现。这就是问题所在。

不幸的是,没有神奇的解决方案;您将要么在没有C ++ 11的情况下使用SFML,要么使用g ++ 4.7和C ++ 11支持编译SFML。或者你可以使用另一个IDE。

请注意,SFML不会正式支持非官方编译器。但是,欢迎您尝试在官方论坛上分享您的经验。