2015-05-30 2 views
0

Я видел подобную проблему, но это не решило мою проблему. Я не могу скомпилировать этот пример кода http://www.sfml-dev.org/tutorials/2.3/start-linux.php. Я следую за эту инструкцию, но у меня еще есть ошибка:Я не могу скомпилировать пример кода, SFML

В одном позапрошлом шаге я писал: g++ sfml.o -o sfml-app -L /home/Documents/SFML/SFML-2.1/lib -lsfml-graphics -lsfml-window -lsfml-system

, и я получил это:

sfml.o: In function main': 

sfml.cpp:(.text+0x12d): undefined reference to sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&)' collect2: ld returned 1 exit status

Может кто-нибудь помочь мне с этим?

+0

Могли бы вы вставить код, пожалуйста? Кроме того, вы уверены, что все библиотеки находятся в '/ home/Documents/SFML/SFML-2.1/lib'? – Zach

ответ

0

Кажется, что вы связали библиотеки sfml с вашей программой. Далее вниз эта страница (сразу после фрагмента кода), страница описывает далее:

You must then link the compiled file to the SFML libraries in order to get the final executable. SFML is made of 5 modules (system, window, graphics, network and audio), and there's one library for each of them. To link an SFML library, you must add "-lsfml-xxx" to your command line, for example "-lsfml-graphics" for the graphics module (the "lib" prefix and the ".so" extension of the library file name must be omitted).

g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system

If you installed SFML to a non-standard path, you'll need to tell the linker where to find the SFML libraries (.so files):

g++ main.o -o sfml-app -L<sfml-install-path>/lib -lsfml-graphics -lsfml-window -lsfml-system

Хотя вы включили увязывание в командной строке, моя догадка, что линкер не может найти библиотеки до сих пор, что почему sf::RenderWindow не определено (это объявлено, поэтому компилятор знает, что это такое и, таким образом, успешно компилируется, но не может правильно связать, потому что компоновщик не может найти ссылку для него)

-1

Я проверил путь и папку с библиотеками и библиотеками имеются: http://i.imgur.com/bTk7QCZ.png

Но я до сих пор не могу правильно связать его. Я установил SFML в свой стандартный путь (usr/lib) http://i.imgur.com/Mzp9tMY.png и после компиляции он показывает ту же ошибку.

Ошибка: sfml.o: В функции main': sfml.cpp:(.text+0x12d): undefined reference to научная фантастика :: RenderWindow :: RenderWindow (научная фантастика :: видеорежим, научная фантастика :: Строка сопзЬ &, без знака Int, С.Ф. :: ContextSettings константные &)» collect2: л.д. возвращается 1 выход статус

Мой код это так же, как пример кода:

#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; 
} 
Смежные вопросы