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

C++ Discussion :

[Fichier I/O] Problème de compilation.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut [Résolu][Fichier I/O] Problème de compilation.
    Bonjour,

    J'essaie de récupérer des données d'un fichier mais j'ai un petit souci de compilation. Quand je rajoute la ligne "aseFile >> material_count;", j'obtiens l'erreur de compilation suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Model.obj : error LNK2001: symbole externe non résolu _errno
    libcpd.lib(xwctomb.obj) : error LNK2001: symbole externe non résolu _errno
    Debug/Game.exe : fatal error LNK1120: 1 externes non résolus
    Voici le code de la fonction:
    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
    #include <fstream>
    using namespace std;
    #include "Material.h"
    #include "Model.h"
     
    bool Model::load(string fileName){
     
    	ifstream aseFile(fileName.c_str(), ios_base::in);
    	char buffer[50];
    	int material_count;
    	float f[3];
     
    	// Check if the file pointer is valid.
    	if(!aseFile.is_open()) {
    		return false;
    	}
     
    	// Get the number of materials and create the array
    	while(buffer!=string("*MATERIAL_COUNT")){
    		aseFile >> buffer;
    	}
     
    	// La ligne qui pose problème
    	aseFile>>material_count;
     
    	material = new Material[material_count];
     
    	aseFile.close();
    	return true;
    }

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut Re: [Fichier I/O] Problème de compilation.
    Citation Envoyé par Roming22
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	ifstream aseFile(fileName.c_str(), ios_base::in);
    Si c'est un ifstream, tu n'as pas besoin du ios_base::in.
    Citation Envoyé par Roming22
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	// Check if the file pointer is valid.
    	if(!aseFile.is_open()) {
    		return false;
    	}
    Un simple if (!aseFile) peut vérifier plus de choses.

    Pour ce qui est de ton problème principal, j'ai vu ce genre d'erreurs avec devC++ sur d'autres programmes pourtant correct. Ca ressemble à un bug. Est-ce que par hasard, c'est le compilo que tu utilises ?

    Si oui, soit tu peux en changer, soit tu inclus d'autres fichiers d'en-tête jusqu'à ce que tu trouves celui qui lui manque. Comme j'ai pris l'option 1, je ne peux hélàs pas te dire lesquels sont requis à tort.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Merci de t'intéresser à mon problème.

    Ben j'utilise Visual Studio 2003...
    Pourrais-tu me donner une liste des fichiers que je peux essayer d'inclure pour résoudre le problème?

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Ok, ce n'est donc pas ça.

    Chez moi (VC++ .NET 2005), le code suivant compile sans problème (j'ai fait quelques modifs pour qu'il soit indépendant) :
    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
    #include <fstream>
    #include <string>
    using namespace std;
     
    class Material
    {
    };
     
    class Model
    {
    	Material* material;
    	bool load(string filename);
    };
     
    bool Model::load(string fileName){
     
       ifstream aseFile(fileName.c_str(), ios_base::in);
       char buffer[50];
       int material_count;
       float f[3];
     
       // Check if the file pointer is valid.
       if(!aseFile.is_open()) {
          return false;
       }
     
       // Get the number of materials and create the array
       while(buffer!=string("*MATERIAL_COUNT")){
          aseFile >> buffer;
       }
     
       // La ligne qui pose problème
       aseFile>>material_count;
     
       material = new Material[material_count];
     
       aseFile.close();
       return true;
    }
     
    int main()
    {
    }
    Il doit donc s'agir des options de ton projet. Souvent, par exemple, dans C/C++ Code generation Runtime Library, si différentes bibliothèques ont différentes sélections, ça peut causer des problèmes.

    Bonne chance.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Le problème semble résolu en mettant "Débogage multi-thread" dans l'onglet "bibliothèque runtime" du dossier "Génération de code".

    Est-ce que la solution est "bonne", ou est-ce que je vais me prendre un retour de baton dans pas longtemps?

    Merci beaucoup.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ce problème intervient généralement lorsque tu mixes des bibliothèques ayant des valeurs différentes pour cette option. Si tu as reglé le problème en changeant en "Débogage multi-threaded", c'est que la/les bibliothèque/s que tu utilises a/ont été compilé avec cette option, c'est donc la bonne méthode.

    Je te conseille de te renseigner sur la bibliothèque que tu utilises, en général il en existe plusieurs versions (une monothread et une multithread).

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Bon, ben je suis rassuré alors.

    Merci à tous.

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

Discussions similaires

  1. [MEX] Problème pour compiler plusieurs fichiers
    Par Leiloche dans le forum MATLAB
    Réponses: 3
    Dernier message: 28/10/2008, 13h57
  2. [MEX] Problème de compilation fichier
    Par Riowen dans le forum MATLAB
    Réponses: 6
    Dernier message: 17/04/2008, 03h52
  3. Problème de compilation d'un fichier son
    Par dreanlin dans le forum Dev-C++
    Réponses: 2
    Dernier message: 16/10/2007, 15h11
  4. Réponses: 3
    Dernier message: 12/07/2006, 22h21
  5. Réponses: 9
    Dernier message: 04/03/2006, 20h36

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