2013-07-28 83 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 –