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

22.11.2013, 19:38

QT und SFML - RenderWindow Problem

Hey,

ich arbeite moment mit QT und SFML und habe das Problem, dass wenn ich ein sf::RenderWindow Objekt erzeuge das Programm abstürzt.
Durch einen Buttonklick soll sich ein RenderWindow objekt öffnen. Das wird im Moment durch einen Thread realisiert. Wenn der Button gedrückt wird, wird die Funktion run vom thread aufgerufen, in dieser Funktion wird dann das RenderWindow objekt erzeugt.

Hier meine Threadklasse:

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
26
27
28
29
30
31
32
33
34
35
#ifndef MYTHREAD_H
#define MYTHREAD_H


#include <QTHread>
#include <iostream>
#include <SFML/Graphics.hpp>


class MyThread : public QThread {
public:
  void run()
  {
    sf::RenderWindow window(sf::VideoMode(800,600),"test");
    while(window.isOpen())
    {
        sf::Event event;
        while(window.pollEvent(event))
        {
            if(event.type == sf::Event::Closed)
            {


            }
        }
        window.clear();
        window.display();
    }
    window.close();
    return;
  }
};


#endif // MYTHREAD_H


Jetzt wüsste ich gerne warum das Programm jedesmal abstürzt, wenn ich ein renderwindow objekt erzeuge. Komischerweise kann ich z.B ein sf::Event Objekt ohne Probleme erzeugen.

LG

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

22.11.2013, 19:51

Mal andersrum gefragt: Wieso erzeugst Du ein SFML-Fenster in einem QT-Thread?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

22.11.2013, 19:52

Fehlermeldung wär auch interessant.

MfG
Check

4

22.11.2013, 20:31

Zitat

Mal andersrum gefragt: Wieso erzeugst Du ein SFML-Fenster in einem QT-Thread?
Ich möchte das Fenster seperat zu dem QT Fenster öffnen und das geht nur mit Threads.

Zitat

Fehlermeldung wär auch interessant.


MfG

Check

Quellcode

1
2
3
Starte C:\Qt\Tools\QtCreator\bin\build-2D-Engine-Desktop_Qt_5_1_1_MinGW_32bit-Release\release\2D-Engine.exe...Das Programm ist abgestürzt.
C:\Qt\Tools\QtCreator\bin\build-2D-Engine-Desktop_Qt_5_1_1_MinGW_32bit-Release\release\2D-Engine.exe
 beendet, Rückgabewert -1073741515

5

22.11.2013, 23:58

Du nutzt bestimmt ne falsche DLL. Also dass du mit QT 5 kompilierst, aber ne QT 4.8er DLL benutzt.

MfG
Check

6

23.11.2013, 10:02

Zitat

Du nutzt bestimmt ne falsche DLL. Also dass du mit QT 5 kompilierst, aber ne QT 4.8er DLL benutzt.

MfG
Check
Aber warum stürzt es dann nur bei dem RenderWindow Object ab und nicht bei allen anderen aus der SFML?

7

25.11.2013, 00:19

Aber warum stürzt es dann nur bei dem RenderWindow Object ab und nicht bei allen anderen aus der SFML?
Kenne mich jetzt nicht mit QT aus... Bist du sicher, dass es gehen soll? Ein funktionierendes Beispiel dafür? Probleme kann ich mir sonst im Thread selbst vorstellen, anderer (eigener) Speicherbereich.

Eine Abhilfe könnte eine static Member und/oder static void sein

8

25.11.2013, 10:40

Dein Rückgabewert -1073741515 steht jedenfalls für eine falsche DLL.
Wie hast du das mit dem Absturz denn bitte ausprobiert? Einfach alle Stellen mit sf::RenderWindow auskommentiert? Eigentlich sollte der Fehler auch ganz ohne SFML kommen. :hmm:
Ist deine SFML-Version, die das Programm benutzt, denn absolut aktuell? Anders könnte ich es mir nun auch nicht herleiten und du müsstest überlegen das anders zu machen, z.B. das betreffende Fenster als exe öffnen, z.B. mit den in diesem Thread vorgeschlagenen Ansätzen.

MfG
Check

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

9

25.11.2013, 10:55

Dein Rückgabewert -1073741515 steht jedenfalls für eine falsche DLL.
Auf Rückgabewerte kann man sich nicht immer verlassen, aber wenn man diesen einmal kurz googelt, steht der Rückgabewert für eine fehlende DLL und nicht eine falsche. Bist du sicher dass du all DLLs zur Verfügung gestellt hast? ;)
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

10

25.11.2013, 16:44

Ich hab es mittlerweile geschaft, es lag wirklich an falschen dlls, ich habe jetz nochmal alles neu aufgesetzt und jetzt funktioniert es.
Danke für die ganzen Antworten :)

Werbeanzeige