我的代码:
#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;
}
我的编译器调用:
g++ main.cpp -framework SFML -lsfml-graphics -lsfml-window -lsfml-system
错误信息:
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 上运行。
RenderWindow 是否位于我忘记链接的库中?我以为是在“窗口”那一处..
它在图形包中。因此在 sfml-graphics 中。但你已经链接了那个。但是,您不应该链接到 SFML.framework(它仅包含头文件)。
如here所述,您可以使用框架或dylib。您的程序可以使用以下任一方式进行编译:
g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system
或
g++ main.cpp -framework sfml-graphics -framework sfml-window -framework sfml-system
现在,关于架构x86_64的未定义符号错误,我只能猜测您没有从下载页面下载兼容版本。如果您想使用 g++,请下载“GCC”版本。