Linker/inclure la SDL dans QT

cs_victorjung Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 février 2011 - 4 févr. 2011 à 22:53
htdidi Messages postés 1 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 27 juin 2011 - 27 juin 2011 à 16:29
BOnjour, a tous voila un moment que j essaye d'utiliser la sdl dans qt, je crois que je n'ai jamais etais aussi pres, j'ai juste le probleme suivant, qt, ne reconnais pas, les fonctions init, de la video du joystick et les autres que je pourrais utiliser,
en fait il ne reconnait pas bien ma sdl...
alors j'aimeras savoir ce que j'ai fait faut... dans le doute j'ai aussi ajoutés mes headers sdl avec ceux de qt dans les fichiers qt, et mon sdl.dll avec ceux de qt dans les fichiers qt.
voici mon .pro:
QT       += core gui

TARGET = Essaie2
TEMPLATE = app

INCLUDEPATH +=C:\Users\Victor\Documents\Projets\paintball\SDL-devel-1.2.14-mingw32
LIBS +=C:\Users\Victor\Documents\Projets\paintball\SDL-devel-1.2.14-mingw32\SDL-1.2.14\bin

SOURCES += main.cpp\
        Fenetre.cpp

HEADERS  += Fenetre.h

FORMS    += widget.ui

mon includepath pointe sur le dossier ou il y a ts les .h de la sdl, dans le dossier du reste de la sdl.
et mon libs, vers le sdl.dll dans le dossier ou se trouve le reste de la sdl...

ma classe cpp:
#include "Fenetre.h"
#include 
using namespace std;

Fenetre::Fenetre(int FenWidth, int FenHeight) : QWidget()
{
    setFixedSize(FenWidth, FenHeight);
    setWindowIcon(QIcon("icone_qt.png"));
    setWindowTitle("Editeur Mouvement v0.01");

    onglets = new QTabWidget(this);
    onglets->setGeometry(30, 20, 240, 160);

    // 2 : Créer les pages, en utilisant un widget parent pour contenir chacune des pages.
    page1 = new QWidget;

    // Page 1
        frame = new QFrame();
        frame->setGeometry(30, 20, 120, 90);
        frame->setAttribute(Qt::WA_PaintOnScreen);
        frame->setAttribute(Qt::WA_NoSystemBackground);


        // On lie SDL a Qt
            char windowid[64];
            #ifdef Q_WS_WIN
                sprintf(windowid, "SDL_WINDOWID=0x%lx", reinterpret_cast<qlonglong>(frame->winId()));
            #elif defined Q_WS_X11
                sprintf(windowid, "SDL_WINDOWID=0x%lx", frame->winId());
            #else
                qFatal("Fatal: cast du winId() inconnu pour votre plate-forme; toute information est la bienvenue!");
            #endif

            cout<<windowid;

            SDL_putenv(windowid);
            // Initialisation du système vidéo de SDL
            SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK);
            SDL_Surface* screen = SDL_SetVideoMode(120, 90, 32,SDL_HWSURFACE|SDL_DOUBLEBUF);
        //fin SDL

        QVBoxLayout *vbox1 = new QVBoxLayout;
        vbox1->addWidget(frame);

        page1->setLayout(vbox1);

    // Fin page 1


    onglets->addTab(page1, "SDL Mouvement");
}

ma classe .h
#ifndef FENETRE_H_INCLUDED
#define FENETRE_H_INCLUDED

#include <SDL-1.2.14/SDL.h>
#include<SDL-1.2.14/SDL_video.h>
#include<SDL-1.2.14/SDL_joystick.h>
#undef main

#include <QApplication>
#include <QtGui>

class Fenetre : public QWidget // On hérite de QWidget (IMPORTANT)
{
    public:
    Fenetre(int FenWidth, int FenHeight);

    private:
    QPushButton *m_bouton;
    QTabWidget *onglets;
    QWidget *page1;
    QFrame *frame;

};

#endif // FENETRE_H_INCLUDED

et enfin ma main:
#include "fenetre.h"

int main(int argc, char* argv[])
{

    QApplication app(argc, argv);

    Fenetre fenetre(400,200);
    fenetre.show();

    return app.exec();;
}

alors voila qu'est ce que j'ai faut svp???
Un grand Merci!!!

3 réponses

cs_victorjung Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 février 2011
12 févr. 2011 à 17:41
S'il vous plait j ai vraiment besoin d'aide!!!
0
cs_victorjung Messages postés 7 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 15 février 2011
15 févr. 2011 à 15:42
up je vous en prie
0
htdidi Messages postés 1 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 27 juin 2011
27 juin 2011 à 16:29
Slt !

Le fait qu'il ne reconnais pas les fonctions init signifie que le chemin dans l'includepath n'est pas correct. Il faut modifier comme suit:

INCLUDEPATH +=C:\Users\Victor\Documents\Projets\paintball\SDL-devel-1.2.14-mingw32\SDL-1.2.14\include\SDL
0
Rejoignez-nous