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 :

non ouverture de <afx.h>


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut non ouverture de <afx.h>
    bonjour,
    Je suis en train de reprendre un programme laisse a l abandon depuis quelques temps par quelqu un d autre, et je ne parviens pas a le faire tourner sur mon ordinateur...
    J ai visual studio.net et c'est ecrit en C++. Cependant, a chaque fois que je tente de compiler le .cpp, il me trouve l'erreur suivante :
    h:\layout\layout\stdafx.h(13) : fatal error C1083: Cannot open include file: 'afx.h': No such file or directory
    je ne sais pas a quoi sert cet afx, faisant lui meme partie d un stdafx, mais les sortir du programme ne resoud pas l erreur...
    et quand j essaye de lancer tout de meme l application correspondante, il me met :
    This application has failed to start because MFC70D.DLL was not found. Re-installing the application may fix this problem
    J'ai tente de relancer des dizaines de fois cette application, le probleme ne s est pas resolu... Quelqu'un sait il quoi faire pour pouvoir utiliser ce programme?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 76
    Points
    76
    Par défaut
    Commende déjà par essayer de retrouver les fichiers afx.h et MFC70D.DLL.

    Ensuite, tu vas surement devoir rajouter des flags pour dire à ton compilo ou trouver ces fichiers. (mais j'ignore comment on fait ça sous visual studio)

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Le fichier afx.h, je ne le trouve pas avec la recherche windows, mais je l ai cependant trouve dans C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include. il existe donc je comprends pas que C++ le retrouve pas... pour MFC70D.DLL, je le trouve pas, mais deja, si le probleme de afx etait regle, je pense que ca irait mieux...

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ton installation a du mal se passer.
    Sinon, regles les répertoires d'includes dans les options de visual studio

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    J ai essaye sur plusieurs PC sur lesquels le logiciel etait installe, et ca ne marche toujours pas... ca ne semble donc pas etre l instalation... (ou se passe le reglage des repertoires d include?)
    Je mets ici la partie du debut du code, si ca peut aider a comprendre mon probleme...
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    #include <iostream>
    #include <cstdlib>
    #include <iomanip>
    #include <cmath>
    #include <windows.h>
    #include <time.h>
    #include <stdlib.h>
    #include <stdio.h>
     
    #include "stdafx.h"
    #include "layout.h"
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
     
    /* Seed the random-number generator with current time so that
        * the numbers will be different every time we run.
        */
     //srand( (unsigned)time( NULL ) );
    //srand((unsigned)time(NULL));
     
     
    ///////  My classes
    //variables 
    CString Fname;
     
    // Two dimentional dynamic Vectors
    //typedef std::vector<double> DoubleV;
    //typedef std::vector<DoubleV> DoubleVV; // 2D "array" of doubles
     
    int loc_horizontal;
    int loc_vertical;
    int no_locations;
    int no_mac_types;
    int no_products;
     
    int locations[50];
    int Demand[50];
    int Mac_dups[50];
    int Mac_capacity[50];
    int pro_seq[50][50];
    int Dist[50][50];
    int flow [20][20][20];
    int layout[50][50];
    int temp[50];
    int Time_pro_mac[50][50];
     
     
    ///// My Functions
    void getfile();
    void getinpf();
    void Showinp();
    void Cal_flow();
    void print_error(CString msg,int type);
    void random_layout();
    int GetRandomMachine();
    bool CheckIfValid(int);
     
    // The one and only application object
     
    CWinApp theApp;
     
    //using namespace std;
     
    int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    {
    	int nRetCode = 0;
     
    	// initialize MFC and print and error on failure
    	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    	{
    		// TODO: change error code to suit your needs
    		_tprintf(_T("Fatal Error: MFC initialization failed\n"));
    		nRetCode = 1;
    	}
    	else
    	{
    		// TODO: code your application's behavior here.
    		getfile();
    		nRetCode=0;
    	}
     
    	return nRetCode;
    }
     
    void getfile()
    {
       CString m_file_name;
     AfxMessageBox("Format of Input File : \n1)Location\n2)products \n3)machine types \n4)other details");
     AfxMessageBox("Select the input file ");
     
        CFileDialog Fdlg( true, NULL, NULL,OFN_FILEMUSTEXIST ,  NULL,  NULL );
        Fdlg.DoModal();	
     
      Fname = Fdlg.GetFileName();    
     
     getinpf();
     
     AfxMessageBox("End Of Simulation : \n\nTry with a different set of tasks   ");
     
     return;
    }
    je pense que si c est un probleme de code, c est la dedans... le reste est simple et n utilise probablement pas stdafx.h (je ne sait pas a quoi sert stdafx, et tout le reste du programme est fait avec des choses que j avais deja utilise avant donc il doit servir a cette partie )

  6. #6
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    stdafx.h correspond aux entetes precompilés pour faire gagner du temps lors de la compilation.
    l'include doit etre placé en premier il ne doit pas y avoir d'include avant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "stdafx.h" 
     
    #include <iostream>
    #include <cstdlib>
    #include <iomanip>
    #include <cmath>
    //#include <windows.h>
    #include <time.h>
    #include <stdlib.h>
    #include <stdio.h>
    de plus le contenu de stdafx.h ressemble grosso modo a :
    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
     
    #if !defined(AFX_STDAFX_H__737E1352_48A9_4FD7_BA3C_2F5DB375FD6D__INCLUDED_)
    #define AFX_STDAFX_H__737E1352_48A9_4FD7_BA3C_2F5DB375FD6D__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
    si tu as afxwin.h dans stdafx.h tu ne dois pas avoir windows.h dans ton source.


  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Merci, deja, ca a fait bouger quelque chose! Ca fait plaisir, meme si c est pas encore gagne, ca a enfin change d erreur!
    En fait, j ai essaye de changer la place de stdafx.h et de virer windows.h, et c est mieux (je pense)
    Cependant, si je garde le stdafx.h que j'avais avant, il me met une nouvelle fatal error :
    fatal error C1083: Cannot open include file: 'afxole.h': No such file or directory
    et si je met le stdafx.h que tu m'as donne, j obtiens de meme une fatal error :
    fatal error C1083: Cannot open include file: 'afxwin.h': No such file or directory
    On notera qu'il ne s'agit pas de la meme erreur, mais que toutes deux apparaissent dans le stdafx.h
    Voici l'ancien stdafx.h :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    // 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__105AD54B_9CC9_4ED4_841B_1C73D5DF9F09__INCLUDED_)
    #define AFX_STDAFX_H__105AD54B_9CC9_4ED4_841B_1C73D5DF9F09__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
     
    #ifndef _AFX_NO_OLE_SUPPORT
    #include <afxole.h>         // MFC OLE classes
    #include <afxodlgs.h>       // MFC OLE dialog classes
    #include <afxdisp.h>        // MFC Automation classes
    #endif // _AFX_NO_OLE_SUPPORT
     
     
    #ifndef _AFX_NO_DB_SUPPORT
    #include <afxdb.h>			// MFC ODBC database classes
    #endif // _AFX_NO_DB_SUPPORT
     
    #ifndef _AFX_NO_DAO_SUPPORT
    #include <afxdao.h>			// MFC DAO database classes
    #endif // _AFX_NO_DAO_SUPPORT
     
    #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
     
     
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
     
    #endif // !defined(AFX_STDAFX_H__105AD54B_9CC9_4ED4_841B_1C73D5DF9F09__INCLUDED_)
    Est ce une erreur comprehensible?

    Je me demande quand meme: tu as dit que stdafx servait a faire gagner du temps n est ce pas? dans ce cas, on devrait pouvoir le retirer du code sans probleme, le seul changement serait la vitesse d execution. Pourtant, quand je le supprime, c est encore pire...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    stdafx sert à gagner du temps en précompilant les headers qu'il inclut, mais si tu ne l'utilises pas, tes sources ont quand même besoin de ces fameux headers...

    Donc s'il ne trouve pas les headers en question, c'est sans doute que ses répertoires sont mal réglés. Si la fonction de recherche de Windows ne les trouve pas, c'est qu'il y a un autre problème en plus. (un problème de droits, par exemple)
    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.

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    En fait, je travaille sur les PC d'un labo de mon universite, donc j'ai pu tester sur plusieurs PC (tous avec une version officielle) et tous me donnent le meme probleme. Y a t il une raison logique? Si non, ou peut on trouver ces headers sans devoir re installer completement les logiciels?

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    je viens de faire un test, et en fait, il ne trouve aucun des inclus dans le stdafx.h... je les ai supprimes un a un, et a chaque fois, la fatal error arrive sur celui juste apres celui que je viens de supprimer...

  11. #11
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    alors verifie que ces includes existent bien dans le repertoire du compilateur.
    si ils existent c'est que tu as perdu/endommagé le réglage général sur la recherche des includes dans l'environnement.


  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    euh... c'est peut etre bete comme question, mais comment on fait pour voir les repertoires du compilateur? Et comment fait on pour remettre a jour ce reglage general sur la recherche des includes?

  13. #13
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    en gros tu cherches sur le disque dur ces fichiers
    et s'ils existent pas, t'es foutu , et s'ils existent, il faut que tu règles ce path dans les options de VC tools-->options-->directories-->include

  14. #14
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    wahou! Alors la je suis impressionne du resultat! J ai plus de fatal error! Le module de recherche de windows a du mal, mais je savais ou se trouvaient les fichiers. j ai donc ajoute le path dans la liste des paths existant.
    Resultat : Jai plus de fatal error (par contre, 28 erreurs normales et 5 warnings sont apparus... ) Ce que je ne comprend pas, c est qu'en ajoutant des librairies, il y ait des trucs qui ne soient plus reconnus , genre les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout<<"blablabla"<<endl;
    posent maintenant probleme... (c est une des nouvelles erreurs remarquees)
    En tout cas, merci pour ce grand pas en avant!

  15. #15
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    je vois le commenté dans ton code, tu devrais le décommenter ou préfixer de std:: chaqu'un des appels à cout

  16. #16
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    wouhou!!! T es decidement vraiment super bon! Ca marche!!! Plus qu une erreur :
    H:\layout\layout.cpp(421) : error C2371: 'theApp' : redefinition; different basic types
    layout, c est le nom de mon programme, et theApp, je sais pas a quoi ca sert... L erreur semble se produire a la fin du code dans ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // CLayoutApp construction
     
    CLayoutApp::CLayoutApp()
    {
    	// TODO: add construction code here,
    	// Place all significant initialization in InitInstance
    }
     
    /////////////////////////////////////////////////////////////////////////////
    // The one and only CLayoutApp object
     
    CLayoutApp theApp;
    A quoi ca sert ce fameux theApp?

  17. #17
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    c'est ton objet d'application, tu ne dois en avoir qu'un

    s'il parle de redefinition, tu dois en avoir 2 fois theApp déclaré.

    Cherche dans ton code les endroits où est déclaré theApp

  18. #18
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    effectivement, j'ai un autre "theApp" dans le code. Le second etant celui que j'ai ecrit tout a l'heure. Le premier est situe juste en dessous des declarations en debut de programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // The one and only application object
     
    CWinApp theApp;
    Faut il que j'en supprime un des deux? Quand j'en supprime l'un des deux, une nouvelle erreur apparait :
    LINK : fatal error LNK1104: cannot open file "nafxcwd.lib"
    Est ce encore un probleme de path comme pour les include?

  19. #19
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Ca y est! Ca marche, c'etait effectivement encore un path de .lib qui n allait pas. Je l ai donc rajoute.
    Un grand merci a tous ceux qui m ont aide, vous avez fait de moi le plus heureux des hommes! Ca maaaaaaaaaaaarche!!!!

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

Discussions similaires

  1. [XL-2003] Gestion d'erreur non-ouverture fichier
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/10/2014, 15h59
  2. [XL-2003] probleme non-ouverture classeur protégé
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/06/2014, 20h32
  3. non ouverture de fichier XML
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/07/2013, 15h14
  4. Non ouverture de port avec pyserial
    Par Bayard dans le forum Général Python
    Réponses: 1
    Dernier message: 23/11/2010, 16h04
  5. [AC-2003] Non ouverture form if Is Null
    Par lucas-18 dans le forum IHM
    Réponses: 1
    Dernier message: 12/08/2009, 14h08

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