SFML 2.1 RenderWindow linking error
我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <SFML/Graphics.hpp> int main() { sf::RenderWindow window(sf::VideoMode(800, 600),"SFML window"); while(window.isOpen()) { sf::Event Event; while(window.pollEvent(Event)) { if(Event.type == sf::Event::Closed || Event.key.code == sf::Keyboard::Escape) window.close(); } window.display(); } return 0; } |
我的编译器调用:
1 | g++ main.cpp -framework SFML -lsfml-graphics -lsfml-window -lsfml-system |
错误信息:
1 2 3 4 5 | Undefined symbols for architecture x86_64: "sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&)", referenced from: _main in cc8BMfpR.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status |
我忘记链接的库中的RenderWindow吗? 我以为它在"窗口"中。.我正在运行SFML 2.1,并尝试了各种链接组合,所有这些都给我链接错误。 此链接链是给我最少错误的链接,即RenderWindow错误。 有人帮我弄清楚吗? 我在这里有点茫然。 我在Mac OS 10.8上运行。
Is RenderWindow in a library I forgot to link? I assumed it was in the 'window' one..
它在图形包中。 因此在sfml-graphics中。 但是您已经链接了那个。 但是,您不应该针对SFML.framework链接(它仅包含头文件)。
如此处所述,您可以使用框架或dylib。 您的程序可以使用以下任意一种进行编译:
1 | g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system |
要么
1 | g++ main.cpp -framework sfml-graphics -framework sfml-window -framework sfml-system |
现在,关于架构x86_64的未定义符号错误,我只能猜测您没有从下载页面下载兼容版本。 如果要使用g ++,请下载" GCC"版本。
或者,切换到c声。 (例如,您可以在此处看到clang比GCC更快。)