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

Outils Discussion :

Utilisation d'une DLL "issue des MFC" [Compilation]


Sujet :

Outils

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 8
    Points
    8
    Par défaut Utilisation d'une DLL "issue des MFC"
    Bonjour à tous!
    J'ai un épineux problème. Je dois utiliser une ancienne dll dans un nouveau projet dont j'ai convaincu mon chef d'utiliser Qt plutôt que les MFC.
    Seulement voilà quand j'ai récupéré les 3 fichiers (.dll .lib .h) de cette librairie j'ai constaté qu'elle faisait appel à des éléments des MFC et bien sûr ca ne compile pas quand j'inclus l'entête. Ma question est simple: puis je modifier quelque lignes de ce .h tel que je le décris ci dessous (6 lignes en commentaires) ou bien la moindre modifs m'empêchera d'utiliser les APIs de cette dll
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #pragma once
     
    #include "DllInterface.h"
    class CLASSINDLL_CLASS_DECL CFIPcmd// : public CCmdTarget
    {
        //DECLARE_DYNCREATE(CFIPcmd)
     
    public:
    	CFIPcmd();
    	virtual ~CFIPcmd();
     
    	virtual void OnFinalRelease();
     
    protected:
    //	DECLARE_MESSAGE_MAP()
    //  DECLARE_OLECREATE(CFIPcmd)
    //	DECLARE_DISPATCH_MAP()
    //	DECLARE_INTERFACE_MAP()
     
        LPVOID comm_class;
        LPVOID ident_class;
     
    static int num_class;
    public:
     
     
     
    LONG CommOpen(BYTE port, LONG baud_rate);
    LONG CommClose(void);
    (...) suite de la longue liste d'API
    Arrangé ainsi, mon projet compile mais je n'arrive pas à charger la dll via QLoad que la Qlibrary. Est ce normal selon vous? ou mon erreur est-elle ailleurs? Si ce n'est pas le cas suis-je obliger de revenir au MFC?
    Merci infiniment de votre aide!

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut


    Si tu effectues ce genre de modifications, il est sûr que ça ne fonctionnera plus vraiment bien : si tu vires l'héritage, tu enlèves une série de membres, de fonctions ; si tu vires autant de macros, tu vires tout le code qu'elles génèrent (je n'ai aucune idée de ce que ça peut être). Il semblerait donc étonnant que ça continue de fonctionner. Si tu utilises cet en-tête modifié sans recompiler la bibliothèque correspondante, plus rien ne fonctionnera (la DLL contient alors des classes dont les objets sont censés avoir une certaine taille, alors que l'en-tête indique qu'ils sont bien plus petits).

    Laisse donc les en-têtes comme ils sont et configure le tout pour rendre disponibles les en-têtes des MFC, en plus de déployer les DLL des MFC (tout est disponible dans le dossier d'installation de Visual Studio : C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc, par exemple. (Si, du moins, tu utilises Qt compilé avec VC ; si tu utilises MinGW, bonne chance !)
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup Dourouc05 pour ce conseil(j'utilise Qt compilé avec Vc), je l'ai donc suivi jusqu'à résoudre toute les erreurs jusqu'à celle ci:
    LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'nafxcwd.lib'
    Apparemment il s'agit d'une lib des MFC qui pose problème d'après ce que j'ai lu ici http://support.microsoft.com/kb/243458/fr
    Ce serait donc un souci de configuration du linking mais comment puis-je le resoudre sous Qt creator?
    Encore merci!!

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Il faut indiquer à QMake qu'il faut lier la MFC. Dans ton fichier PRO :

    Si tu n'as pas configuré le chemin du dossier lib de la MFC, il faut aussi le faire, avec -L dans la même variable LIBS (par exemple, -L"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib" – enfin, il me semble, je ne sais plus comment ça fonctionne avec les espaces…).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    OK merci BEAUCOUP, sujet résolu!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2015, 10h23
  2. Utilisation d'une DLL MFC avec Express
    Par CoRfr dans le forum MFC
    Réponses: 4
    Dernier message: 06/07/2011, 15h38
  3. [DLL] Utilisation d'une DLL pour utiliser serveur Firebird
    Par sekiryou dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/08/2004, 14h20
  4. [Info]Utilisation d'une Dll
    Par Assiobal dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/06/2004, 21h46
  5. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19

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