IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Utilisation de SDL2 depuis une DLL


Sujet :

SDL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Utilisation de SDL2 depuis une DLL
    Bonjour,

    Voici mon problème:
    Je développe un petit moteur 2d que je veux utiliser sous forme de dll.
    J'essaye d’intégrer mingw32 SDL2.dll et SDL2main à cette library.

    Seulement, dans le programme utilisant la dll, j'obtiens le fameux "undefined reference to `WinMain@16'".
    Je n'ai, par ailleurs, aucun problème de linkage lorsque je crée une application en intégrant directement SDL2 à mon programme.
    J'ai fait pas mal de recherche, vérifier et tester mes paramètres de linkage, la version de mes libs, etc...

    Je précise que j'utilise CodeBlocks et MinGW tdm 32bits.

    Actuellement, j'utilise une solution de contournement, en définissant une fonction WinMain qui appel ma fonction main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    extern "C"
    {
        int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
        {
            return main(0, 0);
        }
    }
    Mais je ne considère pas cela comme une solution valable.

    Je vous remercie d'avance pour votre aide.

    Kesitem

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Normalement, cela se règle avec libmingw32.a ... mais vous semblez l'avoir mis (il faut bien le mettre en premier par contre).
    Sinon, vous pouvez toujours utiliser un des templates : http://jeux.developpez.com/telecharg.../709/Templates Quitte à comparer avec ce que vous avez fait.
    Pourquoi vous incluez juste SDL2.dll et pas le libsdl2.a ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci pour tes réponses, je ne connaissais pas ces templates, je vais essayé ça rapidement.

    Tu as raison, je vais utiliser lidSDL2.a plutot que la bibliothèque dynamique (à la base mon projet était une lib statique et je n'ai pas pensé à switcher...).

    Kesitem

    ps: je ne mets pas le sujet en résolu, si les templates fonctionnent ou si je trouve la solution, je l'indiquerai ici.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Pas dit que la .dll soit pour autant une bibliothèque statique. Je n'ai pas mémoire d'avoir vu des bibliothèques statiques proposées directement .
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Pas dit que la .dll soit pour autant une bibliothèque statique. Je n'ai pas mémoire d'avoir vu des bibliothèques statiques proposées directement .
    Je ne comprends pas ta remarque?

    L'intégration de la version statique de la lib ne pas posé de problème.

    Par contre, je n'ai pas toujours réussi à régler mon problème. J'ai refait un projet vierge en reconfigurant mes projets pas à pas. Pas de changement.
    Je vais compiler SDL2 avec les informations debug et voir si SDL_main est correctement appelé. Si c'est le cas, je garde ma solution.

    Kesitem

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Donc vous gardez une solution non portable ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je ne désespère pas de trouver une solution. Mais je ne vais pas me focaliser sur ce point.
    (C'est un projet hobby et je n'ai malheureusement pas autant de temps libre que je le voudrai ).

    J'ai défini des directives de compilations conditionnelles, la fonction WinMain n'est appelée que sous Windows. Je n'ai pas de problème sous Ubuntu.

    En tout cas, merci pour les réponses!

    Kesitem

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Vous avez testé avec un des templates proposé ci-dessus ? Pour comparer entre le template et ce que vous faisiez ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    J'ai testé le template "SDL 2.0 Template pour Code::Blocks" (d'ailleurs, celui avec la version 2.0.3 ne dispose pas de liens).

    Quand j'ai reconstruit mon projet à partir de zéro, je me suis basé sur la configuration du template.
    Mon projet était configuré de la même manière (sauf certaines options du compilateur, j'utilise C++11).
    J'ai maintenant un peu plus d'options pour les liens avec SDL2 en statique

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Et votre solution fonctionne ?
    (Je corrigerai pour le lien manquant, merci de me l'avoir signalé.)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Apparemment cela fonctionne, cependant je n'ai pas encore tracé le code en debug pour voir si SDL est correctement initialisée.

    La FAQ de SDL indique que des opérations sont effectuées lorsqu'on appelle SDL_main et je ne sais pas encore si effectivement mon code appelle ces fonctions.

    C'est une de mes prochaines tâches.
    Si jamais, ça n'est pas bon, je reviendrai au développement d'une library static le temps de faire quelques recherches et analyses.

Discussions similaires

  1. Utilisation d'un Object COM depuis une DLL
    Par jdflaugergues dans le forum C#
    Réponses: 0
    Dernier message: 16/04/2014, 16h25
  2. appel d'une fonction utilisant Opencv depuis une dll c++
    Par manoulaisamm dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 06/03/2014, 13h43
  3. Exporter et utiliser une classe depuis une DLL
    Par Havy_25 dans le forum Langage
    Réponses: 1
    Dernier message: 14/07/2009, 19h31
  4. utilisation des fonctions d'une dll
    Par jackk dans le forum C++
    Réponses: 14
    Dernier message: 15/06/2005, 16h50
  5. Comment charger un TFrame depuis une dll ?
    Par Millenod dans le forum Langage
    Réponses: 29
    Dernier message: 22/12/2004, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo