2013-12-02 9 views
4

Я потратил не менее 5 часов, пытаясь заставить библиотеку sfml работать с моим идеем QT-creator. Я следовал этому руководству https://github.com/LaurentGomila/SFML/wiki/Tutorial%3A-Compile-and-Link-SFML-with-Qt-Creator, но все равно не повезло.
Я постоянно получаю сообщение об ошибке, что члены классов не существуют после создания простого кода. Я могу создавать экземпляры классов, но я получаю несколько ошибок при попытке использовать
созданных объектов. Я пробовал искать связанные с библиотекой проблемы, проблемы с sfml, но я не думаю, что ищу правильную проблему.класс sf :: RenderWindow 'не имеет имени с именем' clear '

Это работает и отображает окно, которое никогда не будет близко до принуждая для выхода из программы:

#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 (true)//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; 
} 

Как только я удалить один комментарий ошибка выскакивает. Я не могу понять, в чем дело, что происходит.

Заранее спасибо.

Extra Info

  • Os: Ubuntu 12,10 Live (устанавливается на жесткий диск)

  • Файл проекта Я уверен, что это неправильно
  • TEMPLATE = app 
    
    #CONFIG += console 
    
    CONFIG -= qt 
    
    SOURCES += main.cpp 
    
    LIBS += -L"/home/user/Projects/SFML/lib" 
    
    CONFIG(release, debug|release): LIBS += -lsfml-audio -lsfml-graphics -lsfml-network -lsfml-window -lsfml-system 
    
    CONFIG(debug, debug|release): LIBS += -lsfml-audio -lsfml-graphics -lsfml-network -lsfml-window -lsfml-system 
    
    INCLUDEPATH += "/home/user/Projects/SFML/include" 
    
    DEPENDPATH += "/home/user/Projects/SFML/include" 
    


  • Ошибки: Я выложу выход компиляции
  • main.cpp: In function 'int main()': 
    
    main.cpp:6:5: error: 'CircleShape' is not a member of 'sf' 
    
    main.cpp:6:21: error: expected ';' before 'shape' 
    
    main.cpp:7:5: error: 'shape' was not declared in this scope 
    
    main.cpp:12:23: error: 'class sf::RenderWindow' has no member named 'pollEvent' 
    
    main.cpp:14:23: error: 'class sf::Event' has no member named 'type' 
    
    main.cpp:15:24: error: 'class sf::RenderWindow' has no member named 'close' 
    
    main.cpp:18:16: error: 'class sf::RenderWindow' has no member named 'clear' 
    
    main.cpp:19:16: error: 'class sf::RenderWindow' has no member named 'draw' 
    
    main.cpp:20:16: error: 'class sf::RenderWindow' has no member named 'display' 
    
    16:25:10: The process "/usr/bin/make" exited with code 2. 
    
    Error while building project sfmlTest (target: Desktop) 
    
    When executing build step 'Make' 
    

  • Выполненная Путь
  • make: Leaving directory `/home/username/Documents/Projects/c++/Sfml/sfmlTest-build-desktop-Qt_4_8_1_in_PATH__System__Release' 
    


  • Компилятор Использована
  • Я считаю, что Gnu Compiler, G ++

    +0

    Можете ли вы предоставить больше информации, особенно точный пример ошибки, ОС и компилятора, который вы используете, и как вы точно настроили свой проект? – Lukas

    +0

    @ Lukas - Я буду снабжать все более аккуратно и упорядоченно на дне. Тем не менее, я обеспечил все, кроме ОС. – Andrew

    +2

    Ошибка обычно держится больше, чем только текст, она содержит цифры, указывающие, где именно возникает проблема. Qt Creator - это IDE, которая может использовать множество разных компиляторов, поэтому вам нужно быть конкретным. И вы только что сказали, что вы «следовали» за учебником, что не исключает изменений в файле проекта, что, в свою очередь, может привести к ошибке. – Lukas

    ответ

    4

    Не на 100% уверен, но поскольку вы на Ubuntu, очень вероятно, что вместо того, чтобы скомпилировать SFML самостоятельно, вы просто вызвали apt-get install sfml-dev, который, в свою очередь, установит SFML 1.6, а не SFML 2.x. В SFML 1.6 соглашение об именах было CamelCase и было изменено для SFML 2.0 на camelCase.

    Поскольку вы хотите и должны использовать SFML 2.x, вам нужно либо использовать unofficial package с форума SFML, либо просто скомпилировать SFML самостоятельно.

    +1

    Спасибо! Это именно то, что проблема. Я закончил использовать эти 4 строки кода, и у меня появилась основная форма круга, которая будет отображаться на экране. apt-add-repository ppa: sonkun/sfml-stable # для стабильных версий apt-add-repository ppa: sonkun/sfml-development # для версий разработки apt-get update apt-get install libsfml – Andrew

    Смежные вопросы