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

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

1

20.10.2012, 17:06

sfml 2 - Problem mit Threads

Hallo und guten Tag!
Ich habe mir ein kleines Tutorial über Threads in sfml angesehen und das ganze selbst einmal probiert. Ich benutze (im Gegensatz zu dem Programmierer in dem Tutorial) zwar sfml 2, allerdings habe ich gesehen, dass sich hier kaum etwas geändert hat.
Hier der kleine Quellcode:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <SFML\Graphics.hpp>

using namespace std;

void ThreadFunktion (void *UserData)
{
    for (int i=0; i<10; i++)
    {
        cout << "Thread" << endl;
    }
}

int main()
{
    sf::Thread Thread(&ThreadFunktion);
    Thread.launch();

    for (int i=0; i<10; i++)
    {
        cout << "Main" << endl;
    }

    return 0;
}


Der Compiler gibt mir jetzt allerdings folgenden Fehler aus, bei dem ich Schwierigkeiten habe ihn zu interpretieren:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1>------ Erstellen gestartet: Projekt: sfml_tutorial_Threads, Konfiguration: Debug Win32 ------
1>  main.cpp
1>c:\sfml\sfml2\include\sfml\system\thread.inl(39): error C2198: "void (__cdecl *)(void *)": Nicht genügend Argumente für Aufruf.
1>          c:\sfml\sfml2\include\sfml\system\thread.inl(39): Bei der Kompilierung der  Klassen-template der void sf::priv::ThreadFunctor<T>::run(void)-Memberfunktion
1>          with
1>          [
1>              T=void (__cdecl *)(void *)
1>          ]
1>          c:\sfml\sfml2\include\sfml\system\thread.inl(70): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "sf::priv::ThreadFunctor<T>".
1>          with
1>          [
1>              T=void (__cdecl *)(void *)
1>          ]
1>          c:\users\luca\documents\visual studio 2010\projects\sfml_tutorial_threads\sfml_tutorial_threads\main.cpp(16): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "sf::Thread::Thread<void(__cdecl *)(void *)>(F)".
1>          with
1>          [
1>              F=void (__cdecl *)(void *)
1>          ]
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


wäre nett, wenn ihr mir sagen könntet, woran das denn jetzt genau liegt? An den internen sfml Dateien habe ich nichts verändert...

2

20.10.2012, 17:11

void ThreadFunktion (void *UserData) wieso übergibst du als Parameter UserData, wenn du es gar nicht brauchst und nicht mal übergibst?

Edit: Bitte gewöhne dir an, die Fehlermeldungen (und auch Warnungen) durchzulesen.

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

3

20.10.2012, 17:15

In dem Tutorial mach er es genauso. Gewundert habe ich mich aber auch. Aber der Compiler hätte doch dann auch ne andere Fehlermeldung ausgegeben, oder? Sowas wie 'Akzeptiert keine 0 Argumente'?

http://www.youtube.com/watch?v=OmggjwcXo…249162D5D6FA5D1

4

20.10.2012, 17:18

SFML != SFML 2

Du kannst die Tutorials bei der SFML Website anschauen. Hier ist das, was du brauchst.

Edit: YouTube Programmier-Tutorials sind sehr sehr oft/immer schlecht.

Werbeanzeige