SFML, GCC и неопределенный символ для sf :: String - PullRequest
0 голосов
/ 11 июня 2018

У меня установлен gcc 8.1.0 через homebrew на macOS 10.13.4.Я также установил sfml 2.4.2_1 через homebrew.Когда я компилирую этот файл:

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode().getDesktopMode(), "My Window");
    while (window.isOpen())
    {
        sf::Event event;
        while(window.pollEvent(event))
        {
            window.clear();
            if (event.type == sf::Event::Closed)
            {
                window.close();
            }
        }
    }
    return 0;
}

с g++-8 sfmltest.cpp -o sfmltest -lsfml-system -lsfml-graphics -lsfml-window -lsfml-audio -lsfml-network

я получаю неопределенную ссылку на sf :: String:

Undefined symbols for architecture x86_64:
  "sf::String::String(char const*, std::locale const&)", referenced from:
      _main in cciQ649w.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

Я понимаю, что не долженне нужны все эти библиотеки.Я включил их в надежде избавиться от ошибки неопределенных символов.Если я компилирую один и тот же файл с теми же библиотеками, используя clang++, все компилируется просто отлично.

Я предполагаю, что homebrew использует clang для компиляции и установки sfml и что созданный abi несовместим с gcc.Кто-нибудь может это подтвердить?Это то, что я могу исправить?Для меня не проблема использовать clang++.Я бы предпочел использовать g++ только потому, что хочу.

...