Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.12.2010, 14:18

SFML Problem beim Erstellen eines RenderWindow

Hallo!

Ich glaube, das so eine Frage schon öfters gestellt wurde, deshalb sorry, dass ich nohcmal nachfragen muss (Hab über die suchfunktion nichts gefunden, dass mir hilft)

Also zu meinem Problem:
Ich habe in meinem Visual Studio 2010 alles so eingestellt, wie es im Tutorial von der SFML Homepage beschrieben wird.
Die Include und Lib - Verzeichnisse sind eingetragen und ich Linke die sfml-system.lib in allen Konfigurationen.

Der Linker meint trotzdem, dass ein Verwei auf ein nicht aufgelöstes externes Symbol besteht.

C-/C++-Quelltext

1
2
3
4
5
6
7
1>------ Erstellen gestartet: Projekt: SFML_Erstellen, Konfiguration: Release Win32 ------
1>  main.cpp
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual __thiscall sf::RenderWindow::~RenderWindow(void)" (??1RenderWindow@sf@@UAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall sf::RenderWindow::RenderWindow(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned long,struct sf::WindowSettings const &)" (??0RenderWindow@sf@@QAE@VVideoMode@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KABUWindowSettings@1@@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@QAE@III@Z)".
1>C:\Users\Johannes\Desktop\Spieleprogrammierung\Projekte\SFML_Erstellen\Release\SFML_Erstellen.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Hier noch schnell der Code dazu:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#include <SFML\Graphics.hpp>
using namespace sf;

int main()
{
    Clock clock; //<---- Hier bekomme ich nämlich keine Fehlermeldung ?! Funktioniert problemlos !

    RenderWindow screens(VideoMode(800, 600, 32), "SFML Graphics"); //<--- Hier kommt es zum Linker - Error
    return 0;
}


Ich habe es auch in beiden Konfigurationen versucht (Debug und Release), bekomme aber immer die selbe Fehlermeldung ...
Ich hoffe, ihr könnt mir helfen.

Liebe Grüße,
Ombalat

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

2

27.12.2010, 14:29

Du musst nicht nur sfml-system, sondern auch sfml-window linken

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

27.12.2010, 14:45

Vermutlich auch noch sfml-graphics, weil RenderWindow ja da her kommt.

4

27.12.2010, 14:55

Aaaah, verstehe.
Jepp, ich muss beide linken (sfml-window wegen SetVidoeMode und sfml-graphics für RenderWindow)

Vielen Dank!
Ombalat

Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »Ombalat« (27.12.2010, 15:29)


5

27.12.2010, 17:11

Hallo ... Ich bins nohcmal ^^
Ich schreibs gleich hier rein, dann brauch ich kein zweites Thema deswegen aufmachen ...

Irgendwie klappt das mit dem Fenstererstellen ganz und gar nicht ...
Ich kann z.B. das Fenster nicht auf dem Stack erzeugen ... Dann bekomme ich einen "Corrupt" Error ...

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <SFML/Graphics.hpp>
using namespace sf;

int main()
{
    RenderWindow screen(VideoMode(800, 600, 32), "SFML Graphics");

    return EXIT_SUCCESS;
}

(Fehlermeldung_Stack im Dateianhang)

Wenn ich das Fenster auf dem Heap erzeuge, kann ich es zwar erstellen, jedoch kann ich den Bildschirm dann nicht "clearen"

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <SFML/Graphics.hpp>
using namespace sf;

int main()
{
    RenderWindow *screen = new RenderWindow(VideoMode(800, 600, 32), "SFML Graphics");
    
    while(screen->IsOpened())
    {
        screen->Clear(); //<--- Hier tritt der Fehler auf
        screen->Display();
    }
    
    screen->Close();
    return EXIT_SUCCESS;
}

(Fehlermeldung_Heap im Dateianhang)

Bitte nocheinmal um Hilfe

Schönen Abend,
Ombalat
»Ombalat« hat folgende Bilder angehängt:
  • Fehlermeldung_Stack.png
  • Fehlermeldung_Heap.png

6

27.12.2010, 17:24

Öhm also das Problem kann ich leider nicht nachvollziehen. Bei mir funktioniert beides problemlos...

Mir fällt da jetzt auch nicht viel ein außer 'nem Neustart... vielleicht hilft das was - sozusagen um mal den Stack zu resetten. ;)

Gruß
SaRu_

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

7

27.12.2010, 17:43

Du sagst du nutzt VisualStudio 2010. Hast du die SFML selbst kompiliert oder nutzt du das vorgefertigte SDK für Visual Studio 2008. In letzterem Falle solltest du die SFML mal neu kompilieren mit VS2010

8

27.12.2010, 17:47

Ich hab die SFML wie im Tutorial beschrieben über den Autokonverter konvertiert.
Hätte ich danach etwa nohc kompilieren müssen? Das wäre mir dann entfallen ...

Edit:
Tatsächlich ... Habs kompilieren vergessen :S

VIELEN DANK NOCHEINMAL !!!

Werbeanzeige