-
Bonjour,
J'ai un petit problème avec le linkage de la SFML sous Qt Creator.
La fenêtre ne s'affiche pas, et la sortie console est inutilisable.
Avec la 1.6, tout marchais pourtant très bien...
Voilà le code concerné, dans le .pro:
QT -= gui
QT += core xml
CONFIG += console
TEMPLATE = app
LIBS += -LC:/QtSDK/mingw/SFML-2.0/lib -lsfml-graphics
LIBS += -LC:/QtSDK/mingw/SFML-2.0/lib -lsfml-window
LIBS += -LC:/QtSDK/mingw/SFML-2.0/lib -lsfml-system
INCLUDEPATH += "C:/QtSDK/mingw/SFML-2.0/include"
Et le main:
int main(int argc, char* argv[])
{
Window window(VideoMode(800, 600, 32), "Window");
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event))
{
if(event.type == Event::Closed)
{
window.close();
}
}
}
return 0;
}
merci :)
-
La fenêtre ne s'affiche pas du tout ? Ou bien juste son contenu ?
La sortie console est inutilisable pour quoi ? Je ne vois rien dans ton code qui l'utilise.
-
Non absolument rien n'est affiché.
Je viens de faire le test avec la 1.6 tout marche avec celle ci...
Concernant la console, c'est à dire que rien ne s'affiche dedans même avec un simple cout quand j'utilise la sfml :(
-
Donc en gros le programme se lance (c'est sûr ça ?) mais bloque avant même d'arriver dans le main(), et reste bloqué comme ça jusqu'à ce que tu le zigouilles ?
-
Oui le programme se lance, et se termine comme si toutes les instructions avaient été ignorées.
En retirant le code sfml, tout remarche normalement...
-
Donc il se termine ? Il ne bloque pas ?
S'il se termine, lance le avec le debugger et regarde s'il te sort des choses intéressantes.
-
Je réinstalle Qt et réessaye tout ça après :-\
-
Si tu as un gcc 4.7, il faudra aussi recompiler SFML.
-
La SFML est compilé avec Visual?
-
Les compilos ne sont pas compatibles entre eux. Y compris les différentes variantes et versions de gcc.
-
Bon apparement Qt 5.0 n'est pas utilisable tel quel avec MinGW, obligé d'utiliser le magnifique compilateur VS... disont... avec des messages d'erreurs complètement pourris comparé à MinGW, ;D
Apparement, le programme plante à l'utilisation de la SFML 2.0
Voilà les fichiers du projet Qt:
// .pro
LIBS += "C:/Qt/librairies/SFML-VS10-2.0/lib/sfml-system-d.lib"
LIBS += "C:/Qt/librairies/SFML-VS10-2.0/lib/sfml-window-d.lib"
LIBS += "C:/Qt/librairies/SFML-VS10-2.0/lib/sfml-graphics-d.lib"
INCLUDEPATH += "C:/Qt/librairies/SFML-VS10-2.0/include"
SOURCES += \
main.cpp
#include <SFML/Graphics.hpp>
using namespace sf;
// main.cpp
int main(int argc, char *argv[])
{
Window app(VideoMode(800, 600, 32), "Hello World");
Event event;
while(app.isOpen())
{
while(app.pollEvent(event))
{
if(event.type == sf::Event::Closed)
{
app.close();
}
}
}
return EXIT_SUCCESS;
}
-
Le debugger dit quoi ?
-
En plus Qt ne fourni pas de débugger avec la 5.0...
Juste un code d'erreur incompréhensible: -1073741515
-
T'es sûr que tu ne peux pas utiliser MinGW avec Qt 5 ? Ca paraît assez improbable.
-
Il faudrait recompiler Qt , dans cette version la bibliothèque est compilée avec VS
C'est quand même assez bizarre, je vais essayer.
Je sais pas si qqn a déjà utilisé la SFML avec Qt 5...
-
Il faudrait recompiler Qt , dans cette version la bibliothèque est compilée avec VS
Alors vas-y ;)
Ne t'étonne pas trop de ce genre de limitation pour l'instant, n'oublie pas que Qt 5 est encore en RC, il n'y a pas encore de release finale.
Je sais pas si qqn a déjà utilisé la SFML avec Qt 5...
Aucune différence avec Qt 4, à mon avis. L'API des widgets n'a pas bougé (du moins elle est toujours compatible avec l'API Qt 4).
-
Bon j'utilise Qt Creator 2.6 avec la bibliothèque Qt 4.8.4, et en compilation MinGW 4.4 (ouf :P)
L'erreur vient apparemment du linkage des bibliothèques. Quelque chose cloche ici:
LIBS += "C:/Qt/librairies/SFML-2.0/lib" \
-lsfml-graphics-d-2 \
-lsfml-window-d-2 \
-lsfml-system-d-2 \
Je précise que les dll de la SFML se trouvent sous le répertoire lib...
-
Il n'y a pas de "-2" dans les noms des bibliothèques (uniquement dans les DLLs).
-
Yes! j'avais en faite téléchargé la mauvaise version de la SFML, c'est-à-dire GCC DW2 à la place de GCC SJLJ..
Je ne comprends pas trop cette différence, mais bon il était noté Code::Blocks entre parenthèses pour SJLJ. Tu pourrais presque en profiter pour rajouter Qt ^^
-
Ca n'a rien à voir, ça dépend uniquement du compilo.
En fait il y a plusieurs variantes de gcc sous Windows, et malheureusement elles ne sont pas compatibles entre elles. Les différences sont variées : support de C++11, modèle de threading, modèle d'exceptions, etc. Et si ta variante de gcc ne correspond pas exactement à celle qui a servi à compiler SFML, tu n'as pas le choix, il faut la recompiler.
-
Je n'ai pas eu besoin de recompiler, dans mon cas sjlj marche parfaitement.
Merci encore ;)