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

MFC Discussion :

[WIN32][MFC] Compilation ..WINDOWS.H


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut [WIN32][MFC] Compilation ..WINDOWS.H
    Bonjour,

    Pour vous décrire la structure du projet, j'ai une application non MFC qui utilise une dll MFC.

    Cette dll utilise les API windows...winmm.lib
    La dll est exporte une classe qui permet au programme non MFC de démarrer l'enregistrement audio.

    Donc je déclare avec .h dans le programme Win32 une classe héritant de la dll d'export.

    Compilation:

    La compilation de la dll se fait nickel !

    La compilation de l'appli non, il me dit "WINDOWS.H already included. MFC apps must not #include <windows.h> "

    Je n'ai aucun windows.h dans la dll MFC, que "afxwin.h" <mmsystem.h>

    Ce que je ne comprend pas c que si je retire la déclaration de la dll dans l'appli , ca compile....

    Je comprend pas comment en ajoutant une dll le prog win32 va voir des windows.h...
    J'ai mis dans tous les .h des #ifndef NOM_ #define NOM_ .....#endif //NOM_

    Auriez vous une idée?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    et pourtant le probleme est bien que tu dois avoir l'include windows.h quelque part.
    montre ton stdafx.h
    et le .h de ta dll (du moins le debut).


  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    Oui, il y a un windows.h dans une des .h de l'appli win32.
    Le problème est que si je le retire ca ne compile plus.


    Un bout de code du .h de la classe qui exporte...
    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
     
    // Pipe.h: interface for the CPipe class.
    //
    //////////////////////////////////////////////////////////////////////
    #ifndef AFX_PIPE
    #define AFX_PIPE
     
    #include "soundin.h"
    #include "soundout.h"
    #include "soundfile.h"
    #include "ptrFIFO.h"
     
     
    #ifndef __PIPE_H_
    #ifdef PIPE_EXPORTS
    #define __PIPE_H_ __declspec(dllexport)
    #else
    #define __PIPE_H_ __declspec(dllimport)
    #endif
    #endif
     
    class __PIPE_H_ CPipe
    {
    public:
    	CPipe();
    	virtual ~CPipe();


    Un bout de code du stdafx.h de la dll

    pour l'appli visual ne m'en a pas créer, ( j'ai peu etre oublié)

    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
     
    // stdafx.h : include file for standard system include files,
    //  or project specific include files that are used frequently, but
    //      are changed infrequently
    //
     
    #if !defined(AFX_STDAFX_H__00B1537B_DE52_47A1_8ADB_847D40309F55__INCLUDED_)
    #define AFX_STDAFX_H__00B1537B_DE52_47A1_8ADB_847D40309F55__INCLUDED_
     
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
     
    #define VC_EXTRALEAN		// Exclude rarely-used stuff from Windows headers
     
    #include <afxwin.h>         // MFC core and standard components
    #include <afxext.h>         // MFC extensions
    #include <afxdisp.h>        // MFC Automation classes
    #include <afxdtctl.h>		// MFC support for Internet Explorer 4 Common Controls
    #ifndef _AFX_NO_AFXCMN_SUPPORT
    #include <afxcmn.h>			// MFC support for Windows Common Controls
    #endif // _AFX_NO_AFXCMN_SUPPORT
     
    #pragma comment( lib, "winmm.lib" )
     
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
     
    #endif // !defined(AFX_STDAFX_H__00B1537B_DE52_47A1_8ADB_847D40309F55__INCLUDED_)
    Est que je peux rajouter a la main un fichier stdafx.h



    J'ai lu quelque part qu'il fallait trouver le afx..h remplacant windows.h

    alors il me sert a déclarer les appels du style LPCTSTR lpsAddr; const DWORD&
    Les sockets... et Cwinthread

    merci de ton aide

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    et bien tu peux entourer la declaration de windows.h par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #ifdef _WINDLL
    #include <windows.h>
    #endif

  5. #5
    Membre averti
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    Ce bout supplémentaire, déclare windows.h si c'est une dll windows?

    Ce bout de code doit etre mis dans l'appli win32? en lieu et place de windows.h?

    si oui voici le resultat:
    Avec ca j'ai un autre soucis, dans un fichier de l'appli, ".h" Les commandes comme LPCSTR...

    Saurais tu le fichier correspondant au déclaration DWORD, BOOL...faut il mettre celui je dirais "win32" ou MFC?

  6. #6
    Membre averti
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    ya t'il un .h pour l'utilisation de ceci, je ne trouve rien dans la msdn

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    operatorbaba() const {return...
    operator?? je ne connais pas...l'appli win32 c du code repris...

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Généralement, ce sont les opérateurs de conversion.
    CString::operator LPCTSTR sert à obtenir directement un const TCHAR * ) partir de la CString:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CString chn = "Coucou";
    LPCTSTR autreChn = chn;
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre averti
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    Est il possible de remplacer #include <winsock2.h>, car celui-ci introduit windows.h
    J'ai essayé de mettre afxsock.h mais le compilateur ne reconnait pas ensuite WSADATA ; WSACreateEvent() ...

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    ou apparait l'erreur ?
    dans la dll ? le projet qui utilise la DLL ?

  10. #10
    Membre averti
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    J'ai reussi a combattre presque tout le code...

    En faite le probleme survient a la compilation d'une librairie supplémentaire static qui permet a l'application d'utiliser les sockets, etc...

    L'appli se sert de fonction socket créer dans la librairie static.

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

Discussions similaires

  1. Problème Win32 en compilant sous VS 2005
    Par boudreau_benjamin dans le forum Windows
    Réponses: 2
    Dernier message: 14/04/2007, 12h22
  2. [Free Pascal] Cross-compiling Windows -> Linux : comment faire ?
    Par zafo dans le forum Free Pascal
    Réponses: 5
    Dernier message: 01/03/2007, 12h43
  3. Difference entre MFC et Windows Application
    Par abbd dans le forum Visual C++
    Réponses: 2
    Dernier message: 27/02/2007, 13h18
  4. Incompatibilité d'un PGM sous Win32 / MFC
    Par beb30 dans le forum MFC
    Réponses: 2
    Dernier message: 09/03/2006, 10h47
  5. Réponses: 15
    Dernier message: 22/03/2005, 14h45

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