2013-07-28 41 views
1

我的代码:SFML 2.1 RenderWindow的链接错误

#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上运行。

回答

1

是RenderWindow的在图书馆,我忘了链接?我认为它是在'窗口'之一..

这是在图形包。因此在sfml-graphics中。但是你已经链接了那个。但是,你并不想链接到SFML.framework(它只包含头文件)。

如前所述here,您可以使用框架或dylibs。

g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system 

g++ main.cpp -framework sfml-graphics -framework sfml-window -framework sfml-system 

现在,关于建筑x86_64的错误未定义的符号,我只能猜测你没有从下载兼容的版本:您的程序可与编译download page。如果您想使用g ++,请下载“GCC”版本。

可以切换至clang。 (例如,你可以看到here那个铿锵可以比GCC快)

+0

我确实搞砸了,并下载错误的版本..似乎现在正在编译gcc版本,除了现在,除了现在当我尝试运行输出我得到更多的错误.. –

+0

使dyld:懒符号绑定失败:找不到符号:__ZN2sf12RenderWindowC1ENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE 从引用:/Users/.../Work/Game_Projects/SFML_tutorials/./a.out 预计:在/ usr/local/lib目录/ libsfml-graphics.2.dylib 使dyld:找不到符号:__ZN2sf12RenderWindowC1ENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE 从引用: –

+0

/Users/.../Work/Game_Projects/SFML_tutorials/./a.out 预计在:/usr/local/lib/libsfml-graphics.2.dylib 跟踪/ BPT陷阱:5 –