我对此代码有疑问:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
当我尝试运行CodeBlocks时说:
undefined reference to `sf::String::String(char const*, std::locale const&)
undefined reference to `sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)
undefined reference to `sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&)
还有很多其他错误。这里的图书馆包括
我定义&#34; SFML_STATIC&#34;太。 有谁知道为什么?感谢。
答案 0 :(得分:0)
从SFML 2.2开始,当静态链接时,您必须链接所有 SFML的依赖项也适用于您的项目。这意味着,如果你 例如,您将链接sfml-window-s或sfml-window-s-d 还必须链接opengl32,winmm和gdi32。其中一些依赖 库可能已经列在“继承值”下,但添加了 他们自己不应该造成任何问题。
此外,由于Code :: Blocks使用GCC,因此链接顺序很重要。 这意味着依赖于其他库的库必须是 在他们依赖的库之前添加到库列表中。如果你 不遵守此规则,您将收到链接器错误。
您可以在此处看到每个模块的依赖关系
http://www.sfml-dev.org/tutorials/2.3/start-cb.php
希望这会有所帮助。