Я не могу скомпилировать пример кода, SFML

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

В предпоследнем шаге я написал: 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): неопределенная ссылка на sf :: RenderWindow :: RenderWindow (sf :: VideoMode, sf :: String const &, unsigned int, sf :: ContextSettings const &) 'collect2: ld вернул 1 статус выхода

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


person Beast    schedule 30.05.2015    source источник
comment
Не могли бы вы вставить свой код? Кроме того, вы уверены, что все библиотеки находятся в /home/Documents/SFML/SFML-2.1/lib?   -  person Zach    schedule 31.05.2015


Ответы (2)


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

Затем вы должны связать скомпилированный файл с библиотеками SFML, чтобы получить окончательный исполняемый файл. SFML состоит из 5 модулей (системный, оконный, графический, сетевой и аудио), и для каждого из них есть одна библиотека. Чтобы связать библиотеку SFML, вы должны добавить «-lsfml-xxx» в свою командную строку, например «-lsfml-graphics» для графического модуля (префикс «lib» и расширение «.so» имени файла библиотеки необходимо опустить).

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

Если вы установили SFML по нестандартному пути, вам нужно указать компоновщику, где найти библиотеки SFML (файлы .so):

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

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

person Tas    schedule 30.05.2015

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

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

Ошибка: sfml.o: в функции main': sfml.cpp:(.text+0x12d): undefined reference tosf :: RenderWindow :: RenderWindow (sf :: VideoMode, sf :: String const &, unsigned int, sf :: ContextSettings const &) 'collect2: ld вернул 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;
}
person Beast    schedule 31.05.2015