• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Instalacja SFML na Visual Studio 2017 - błąd "Nierozpoznany symbol zewnętrzny"

VPS Starter Arubacloud
+1 głos
2,151 wizyt
pytanie zadane 27 maja 2017 w C i C++ przez easytodo Mądrala (5,380 p.)

Witam serdecznie,
próbuję podpiąć SFML do projektu w Visual Studio 2017 i już przy próbie kompilacji projektu otrzymuję komunikaty:
> nierozpoznany zewnętrzny symbol "public: __thiscall sf::String::String(char const *,class std::locale const &)" (??0String@sf@@QAE@PBDABVlocale@std@@@Z) przywołany w funkcji _main - plik main.obj
> nierozpoznany zewnętrzny symbol "public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@QAE@III@Z) przywołany w funkcji _main - plik main.obj
> Jeszcze kilkanaście podobnych błędów o nierozpoznanych zewnętrznych symbolach
> Liczba nierozpoznanych elementów zewnętrznych: 16 - plik Projekt.exe

Kompilowany kod to przykładowy kod ze strony SFML:
 

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

SFML musiałem skompilować samodzielnie przez CMake z powodu braku oficjalnej wersji na VS2017, zrobiłem to dokładnie tak jak tutaj: https://www.youtube.com/watch?v=d_uZxXFo6J0 , a następnie kierowałem się tym poradnikiem: https://www.sfml-dev.org/tutorials/2.4/start-vc.php .

Proszę Was o pomoc, przy VS2015 instalowałem SFML'a za pomocą nuget, jednak w VS2017 paczki te nie działają.

 

komentarz 28 maja 2017 przez unknown Nałogowiec (39,560 p.)
https://www.sfml-dev.org/download/sfml/2.4.2/

Wersja przeznaczona do VS2015 jest zgodna z VS2017
komentarz 29 maja 2017 przez Knayder Nałogowiec (37,640 p.)
Dodałeś niezbędne DLL do projektu?
komentarz 29 maja 2017 przez criss Mędrzec (172,590 p.)
komentarz 29 maja 2017 przez easytodo Mądrala (5,380 p.)
Brak dll wychodzi dopiero po uruchomieniu projektu, kompilacja powinna przejść bez problemów.
komentarz 29 maja 2017 przez easytodo Mądrala (5,380 p.)
Criss zrobiłem wszystko tak jak jest napisane w podlinkowanym poście, z 16 błędów zrobiły się 2 (także nierozpoznane symbole zewnętrzne): sf::Color i RenderStates. Po wyrzuceniu z kodu linii:
//shape.setFillColor(sf::Color::Green);
//window.draw(shape);

Kompilacja kończy się powodzeniem i program odpala, no ale niestety najwyraźniej jest problem z kolorami i renderingiem, a pewnie z czymś więcej.
1
komentarz 29 maja 2017 przez criss Mędrzec (172,590 p.)
@easytodo Być może jednak nie wszystko jest zgodne pomiędzy tymi wersjami msvc. Ciężko mi powiedzieć, bo sam mam jedynie VS15.

Haczyk w samodzielnej kompilacji SFML jest taki, że biblioteki z których z kolei budowany jest SFML są już skompilowane (https://github.com/SFML/SFML/tree/master/extlibs) i po prostu odpowiednie (dla konkretnego kompilatora) są dobierane przez skrypt CMake-owy. Tyle, że VS17 nie jest w ogóle uwzględniany. Tak podejrzewam, że z tego wynikają problemy. Więc musiałbyś samodzielnie kompilować wszystkie te dependency i pewnie jeszcze lekko modyfikować skrypt CMake-a. Także prościej już raczej pracować na VS15... O ile dobrze myśle ofc..
komentarz 29 maja 2017 przez easytodo Mądrala (5,380 p.)
Rozumiem, czas więc wracać do VS15 :) Dzięki za poświęcony czas!
1
komentarz 29 maja 2017 przez criss Mędrzec (172,590 p.)
Z drugiej strony i Knayderowi i autorowi zalinkowanego posta wszystko działało (a przynajmniej nic potem nie pisał), więc troche nie wiem co o tym myśleć.. Anyway - na VS15 masz 100% pewności :D A ekipa sfml powinna po prostu ogarnąć kompilacje na vs17.

2 odpowiedzi

0 głosów
odpowiedź 28 maja 2017 przez Milesq Nałogowiec (32,020 p.)
Chodzi o kod. Przepisz go sam i nie powinno być problemów.
komentarz 28 maja 2017 przez easytodo Mądrala (5,380 p.)
Nie wiem jak to miałoby pomóc :|
komentarz 28 maja 2017 przez Milesq Nałogowiec (32,020 p.)
Miałem podobny problem. Kiedy kopiujesz kod z neta to niektóre znaki mają inny kod w asci a inny w kodowaniu w programie. U mnie był to jeden błąd więc wystarczyło zastąpić jeden znak spacją.

Spróbuj, ten kod nie jest taki długi
komentarz 28 maja 2017 przez easytodo Mądrala (5,380 p.)
No niestety dalej błąd wyskakuje, to chyba jest błąd z linkerem ale nie wiem co poszło nie tak, wszystko identycznie zrobiłem z tym filmem i tutkiem ze strony sfmla. Spróbuję od nowa skompilować biblioteki i dam znać czy problem został rozwiązany.
0 głosów
odpowiedź 28 maja 2017 przez Pascal Bywalec (2,720 p.)

Pokaż swoje ustawienia:

  • General » Additional Include Directories
  • Linker » General » Additional Library Directories

dla wszystkich, debug i realase

komentarz 28 maja 2017 przez easytodo Mądrala (5,380 p.)

Foldery Include i lib to foldery które wyjąłem z folderu, który został skompilowany przez CMake i wsadziłem je do folderu dla Visuala (są tam tylko te 2 foldery).
Wybacz jakość, kompresja na forum :)

Podobne pytania

0 głosów
1 odpowiedź 2,127 wizyt
0 głosów
0 odpowiedzi 1,076 wizyt
0 głosów
0 odpowiedzi 660 wizyt

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...