ОШИБКА при отладке кода SFML в коде Visual Studio

#c #linux #debugging #g #sfml

#c #linux #отладка #g #sfml

Вопрос:

Я создал проект, использующий библиотеку SFML в Linux, он работает довольно хорошо. Я запускаю его, запуская этот скрипт exec.sh:

 g   -c main.cpp -I/usr/include
g   main.o -o sfml-app -L/usr/lib -lsfml-graphics -lsfml-window -lsfml-system
export LD_LIBRARY_PATH=/usr/lib amp;amp; ./sfml-app
 

И вот код de в main.cpp файл:

 #include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Blue);

    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;
}
 

Но проблема в том, что я не могу его отладить, и у меня всегда возникает ошибка при попытке ее выполнить. Может кто-нибудь дать мне совет или объяснить, как я могу правильно это сделать? Мне нужно решение именно для Linux, я новичок в этой операционной системе и IDE.

Вот ОШИБКА, после отладки с использованием g :

 Starting build...
Build finished with error:

/usr/bin/ld: /tmp/ccnkqRHk.o: in function `main':
/home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:5: undefined reference to `sf::String::String(char const*, std::locale constamp;)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:5: undefined reference to `sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:5: undefined reference to `sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String constamp;, unsigned int, sf::ContextSettings constamp;)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:6: undefined reference to `sf::CircleShape::CircleShape(float, unsigned long)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:7: undefined reference to `sf::Color::Blue'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:7: undefined reference to `sf::Shape::setFillColor(sf::Color constamp;)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:9: undefined reference to `sf::Window::isOpen() const'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:12: undefined reference to `sf::Window::pollEvent(sf::Eventamp;)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:15: undefined reference to `sf::Window::close()'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:18: undefined reference to `sf::Color::Color(unsigned char, unsigned char, unsigned char, unsigned char)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:18: undefined reference to `sf::RenderTarget::clear(sf::Color constamp;)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:19: undefined reference to `sf::RenderStates::Default'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:19: undefined reference to `sf::RenderTarget::draw(sf::Drawable constamp;, sf::RenderStates constamp;)'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:20: undefined reference to `sf::Window::display()'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:5: undefined reference to `sf::RenderWindow::~RenderWindow()'
/usr/bin/ld: /home/yashmerino/Desktop/Developing/testsfml 1 file/main.cpp:5: undefined reference to `sf::RenderWindow::~RenderWindow()'
/usr/bin/ld: /tmp/ccnkqRHk.o: in function `sf::CircleShape::~CircleShape()':
/usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `vtable for sf::CircleShape'
/usr/bin/ld: /usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `vtable for sf::CircleShape'
/usr/bin/ld: /usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `sf::Shape::~Shape()'
collect2: error: ld returned 1 exit status 

Комментарии:

1. добавил его, извините @drescherjm

2. Это ошибки ссылок, означающие сбой сборки.

3. @drescherjm я вижу. Но если я использую свой файл сценария, введя в терминале: ./exec.sh , это компиляция, сборка и работа.

Ответ №1:

Попробуйте установить библиотеку по системному пути. Для Linux на базе Arch —

 sudo pacman -S sfml
 

Для Linux на базе Debian —

 sudo apt-get install sfml-dev
 

И просто используйте следующую команду g —

 g   -c main.cpp -o main.o
g   main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
 

Для этого лучше использовать IDE. Вы можете использовать

 Code Blocks
Code Lite
Apache netbeans
Eclipse
 

И если вы знакомы с cmake, вы можете использовать-

 Kdevelop