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

Visual C++ Discussion :

Problème avec un projet sur deux machines différentes


Sujet :

Visual C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut Problème avec un projet sur deux machines différentes
    Bonjour,
    J'ai un projet écrit en VC++ 6, composé de plusieurs sous projets.

    Le projet principal (main), se compile et s'exécute normalement sur une machine (win XP !).

    Lorsque, j'ai changé de machine toujours avec VC++ 6 - en copiant l'ensemble des dossiers contenant les sources - vers une deuxième machine, j'ai eu des erreurs de compilation qui ne s'affichaient pas sur la première machine:
    les erreurs sont du genre:
    error C2440: 'specialization' : cannot convert from '' to 'unsigned int (__cdecl *)( &)'
    None of the functions with this name in scope match the target type

    c:\project\version 2.3\src\vision\pseudo.h(3108) : see reference to class template instantiation 'VisStringHashTable<TContent>' being compiled

    ......

    Je n'arrive pas pourquoi ça se comporte ainsi?
    Auriez vous une solution s'il vous plaît.

    merci par avance.
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Les sources ne sont qu'une infime partie de votre projet.
    Votre projet, c'est aussi la configuration et les options de toute la chaine de compilation.
    Vous pouvez avoir ce type de problème, juste en modifiant un petit paramètre dans un coin.

    Donc, regardez votre projet droit dans les yeux.

    Vu le message d'erreur, ça sent la constante de compilation oubliée qui sert au paramétrage d'une classe template.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    Merci pour votre réponse.
    Existe-t-il un moyen pour exporter la totalité du projet de la première machine vers la deuxième sans vraiment toucher ces magouilles?

    Effectivement, j'ai essayé de mettre les deux machines cote-à-cote pour voir la différence des options (et oui ), mais j'arrive pas à voir où est la source du problème.

    merci pour vos conseils.


    Citation Envoyé par bacelar Voir le message
    Les sources ne sont qu'une infime partie de votre projet.
    Votre projet, c'est aussi la configuration et les options de toute la chaine de compilation.
    Vous pouvez avoir ce type de problème, juste en modifiant un petit paramètre dans un coin.

    Donc, regardez votre projet droit dans les yeux.

    Vu le message d'erreur, ça sent la constante de compilation oubliée qui sert au paramétrage d'une classe template.
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Existe-t-il un moyen pour exporter la totalité du projet de la première machine vers la deuxième sans vraiment toucher ces magouilles?
    Oui, c'est d'utiliser un gestionnaire de configuration logiciel comme Subversion, CVS, SourceSafe,Team Foundation Server etc...

    Mais cela ne règle pas le fait que votre projet ne se résume pas qu'aux sources. Il faut que vous en soyez conscient et que vous mettiez dans ces outils tous les fichiers nécessaires à la compilation sur

    Des outils comme TFS (Team Foundation Server) permettent d'interdire les check-ins si le résultat n'est pas compilable ou si les tests de non-régressions ne passent plus.

    Faites le deuil que votre programme "marchait" sur une machine. Si vous ne pouvez pas régénérer votre exécutable sur une autre machine, c'est que votre programme est tombé en marche par hasard et qu'il est intrinsèquement bugée, même si ce n'est que l'environnement de génération et pas l'exécutable et tant que telle.
    Ne jouez pas au jeu des 7 différences, vous ne feriez que reculer pour mieux sauter.

    Donc vous avez un projet qui ne compile pas sur une machine "Destination", cherchez pourquoi. Quand vous aurez l'explication, vous pourrez voir sur la machine "Source" les valeurs qui ont fait que cela a marché par hasard.

    Cela peut vous semblez très lourd mais il faut que votre environnement de génération soit contrôlé et maitrisé. Pensez à utiliser une usine de build comme avec TFS ou Cruise Crontrol ou encore Hudson pour avoir un environnement de détection automatique des boulettes (que tout le monde fait).

    Donc c’est quoi la ligne qui compile pas sur la machine "Destination" ?

    Sinon, en méthode saguoin, avez-vous recopié le dsw et le dsp de votre projet de la machine "Source" dans le projet de la machine "Destination". Cela garde les options de compilations mais si ces chemins en dur ou des plateform SDK divergent entre les 2 machines, vous serrez encore plus dans la mouise.

Discussions similaires

  1. Java RMI Client-Serveur sur deux machines différentes
    Par chercheur111 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 10/12/2014, 17h44
  2. Réponses: 0
    Dernier message: 20/05/2012, 18h39
  3. Réponses: 4
    Dernier message: 24/09/2010, 17h28
  4. Réponses: 7
    Dernier message: 11/05/2010, 10h17
  5. comparer deux fichiers sur deux machines différentes
    Par jackiechen dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 31/12/2007, 13h39

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