Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [1.6 - Qt] Segv RenderWindow  (Lu 3249 fois)

0 Membres et 1 Invité sur ce sujet

Zatae42

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
[1.6 - Qt] Segv RenderWindow
« le: Janvier 13, 2013, 01:07:20 am »
Bonsoir !

Je vais faire simple parce que mon problème est tout bête mais je ne sais pas d'ou cela peut bien venir ...

Je réalise un projet Qt et je souhaite faire apparaître une fenêtre SFML (hors fenetre Qt, une simple fenêtre SFML). Voila le code :

int affWindow()
{
    std::cout << "test0" << std::endl;
    sf::RenderWindow    app(sf::VideoMode(800, 600, 32), "appli");
    std::cout << "test1" << std::endl;
}

voila le .pro pour le linkage de la lib

QT       += core gui

TARGET = appli
TEMPLATE = app

LIBS += -lws2_32 -lwsock32 -LC:\SFML-1.6\lib -lsfml-graphics -lsfml-window -lsfml-system

INCLUDEPATH += C:\SFML-1.6\include

Seulement, rien que ça, ça fait segv (le print de test1 ne s'affiche pas). Tout compile normalement depuis Qt, seulement, quand ça se lance, la fenêtre pop et affiche directement "appli a cesse de fonctionner".

Une idée ? Parce que si c'est pas le linkage qui merde (pourtant je pense pas avoir fait n'importe quoi) je sais pas d'ou ca peut venir !

Oh et, oui je suis sous Windows 8, je ne sais si ça peut venir de la ...
« Modifié: Janvier 13, 2013, 01:13:25 am par Zatae42 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #1 le: Janvier 13, 2013, 09:13:15 am »
Il faut sûrement que tu recompiles SFML.
Laurent Gomila - SFML developer

Zatae42

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #2 le: Janvier 13, 2013, 11:19:59 am »
D'accord, je vais faire ça alors.

D'ailleurs, je suis sur le tuto pour compiler avec Cmake, il est stipulé de choisir la racine du répertoire SFML mais j'ai un petit problème :

CMake Error: The source directory "C:/SFML-1.6" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

D'après l'erreur, il faut choisir un répertoire avec SMakeLists.txt, seulement, je ne le trouve nul part ... J'ai loupé quelque chose ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #3 le: Janvier 13, 2013, 01:21:25 pm »
Le tuto CMake c'est pour SFML 2, pas 1.6.
Laurent Gomila - SFML developer

Zatae42

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #4 le: Janvier 13, 2013, 03:35:51 pm »
Je suis passé sous SFML 2.0 pour tester donc, mais j'ai un petit soucis ...

J'ai des problèmes lors de la compilation cette fois :

_MSVC2010__Qt_SDK__Debug\..\client\Obj.cpp:20: erreur : C2039: 'LoadFromFile'ÿ: n'est pas membre de 'sf::Image'
C:\SFML-2.0-rc\include\SFML/Graphics/Image.hpp(47)ÿ: voir la d‚claration de 'sf::Image'

Je suis aller voir dans les tutos pour la 2.0 mais je ne trouve pas d'exemple pour les images/sprites. Je suppose que les images ne se créées pas et ne s'utilisent pas de la même façon que sur la version 1.6 ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #5 le: Janvier 13, 2013, 05:46:02 pm »
Les fonctions sont toutes passées en camelCase dans SFML 2.

Regarde la documentation en ligne, en attendant les tutoriels.
Laurent Gomila - SFML developer

Zatae42

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #6 le: Janvier 13, 2013, 10:25:47 pm »
Au final, j'ai recompilé la SFML en suivant un tuto qui est sur GitHub, avec cMake, etc. (https://github.com/SFML/SFML/wiki/Tutorial%3A-Compile-and-Link-SFML-with-Qt-Creator)

Seulement, comme toujours, il y a quelque chose qui ne va pas ... Lors de la compilation j'obtiens des erreurs :

22:07:42: Exécution des étapes de compilation pour le projet test...
22:07:42: Configuration inchangée, étape QMake sautée.
22:07:42: Débute : "C:\QtSDK\QtCreator\bin\jom.exe"
        C:\QtSDK\QtCreator\bin\jom.exe -nologo -j 8 -f Makefile.Debug
Qt: Untested Windows version 6.2 detected!
        cl -c -nologo -Zm200 -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -I"c:\SFML-master\include" -I"..\test" -I"." -I"..\..\..\QtSDK\Desktop\Qt\4.8.1\msvc2010\mkspecs\win32-msvc2010" -Fodebug\ @C:\Users\DORIA_~1\AppData\Local\Temp\main.obj.6840.0.jom

jom 1.0.6 - empower your cores

Qt: Untested Windows version 6.2 detected!
main.cpp
        link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:"debug\test.intermediate.manifest" /OUT:debug\test.exe @C:\Users\DORIA_~1\AppData\Local\Temp\test.exe.6840.391.jom
main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: void __thiscall sf::Window::close(void)" (__imp_?close@Window@sf@@QAEXXZ) référencé dans la fonction _main
main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: bool __thiscall sf::Window::pollEvent(class sf::Event &)" (__imp_?pollEvent@Window@sf@@QAE_NAAVEvent@2@@Z) référencé dans la fonction _main
main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: bool __thiscall sf::Window::isOpen(void)const " (__imp_?isOpen@Window@sf@@QBE_NXZ) référencé dans la fonction _main
main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: __thiscall sf::Window::Window(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned int,struct sf::ContextSettings const &)" (__imp_??0Window@sf@@QAE@VVideoMode@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IABUContextSettings@1@@Z) référencé dans la fonction _main
debug\test.exe : fatal error LNK1120: 4 externes non résolus
command failed with exit code 1120
command failed with exit code 2
22:07:42: Le processus "C:\QtSDK\QtCreator\bin\jom.exe" s'est terminé avec le code 2.
Erreur à la compilation du projet test (cible : Desktop)
Lors de l'exécution de l'étape "Make"

J'ai refais la manip de la compilation plusieurs fois pour être sur de ne pas avoir fait de bêtises mais rien m'y fait : ca ne veut pas marcher ... Il y a toujours des erreurs de link

D'ailleurs je ne sais pas si c'est normal, mais je dois déplacer le dossier SFML (qui lui même sort du dossier include) dans le repertoire courant (du projet Qt), sinon, Qt ne trouve pas les include à la compilation.

Voila mon .pro :

TEMPLATE = app
CONFIG += console
CONFIG -= qt

LIBS += -LC:/SFML-master/qtcreator-build/lib

CONFIG(release, debug|release): LIBS += -lsfml-audio -lsfml-graphics -lsfml-main -lsfml-network -lsfml-window -lsfml-system
CONFIG(debug, debug|release): LIBS += -lsfml-audio-d -lsfml-graphics-d -lsfml-main-d -lsfml-network-d -lsfml-window-d -lsfml-system-d

INCLUDEPATH += C:/SFML-master/include
DEPENDPATH += C:/SFML-master/include

SOURCES += main.cpp
 

Et le main.cpp, même si il n'y a pas grand chose :

#include <iostream>
#include <SFML/Window.hpp>

using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    sf::Window window(sf::VideoMode(800, 600), "My window");

    // on fait tourner le programme jusqu'à ce que la fenêtre soit fermée
    while (window.isOpen())
    {
        // on inspecte tous les évènements de la fenêtre qui ont été émis depuis la précédente itération
        sf::Event event;
        while (window.pollEvent(event))
        {
            // évènement "fermeture demandée" : on ferme la fenêtre
            if (event.type == sf::Event::Closed)
                window.close();
        }
    }
    return 0;
}
 

Voila, j'espère que j'ai été clair et c'est pas trop chiant à comprendre !
Merci en tout cas de prendre le temps de me répondre :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #7 le: Janvier 13, 2013, 10:59:54 pm »
Aucune idée, désolé. Ce genre de problème est difficile à résoudre, il y a une couille dans ton environnement et toi seul peut la trouver (ton .pro a l'air ok).
Laurent Gomila - SFML developer

Zatae42

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #8 le: Janvier 14, 2013, 12:28:35 am »
Bien, je vais m'efforcer de trouver une autre solution alors ! Merci du coup demain

Zatae42

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : [1.6 - Qt] Segv RenderWindow
« Réponse #9 le: Janvier 14, 2013, 10:53:49 am »
Voilà, problème résolu !

J'ai tout simplement commencé à coder sur un autre PC, je ne vois pas qu'est ce qui cloche sur mon premier PC ...

J'ai utilisé QtCreator, j'ai suivi le tuto pour recompiler la SFML avec le compilo C++ de Visual 2010. Et je l'ai simplement linké comme dit dans le tuto. Miracle : ca marche du premier coup ...

Donc désolé pour ceux qui viennent chercher une réponse concrète mais, je ne sais pas d'ou venait le problème :o