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 :

Code identique, exe diff�rent


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    25
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 25
    Par d�faut Code identique, exe diff�rent
    Bonjour,
    J'ai un code tr�s simple que je compile et link, qui donne donc un premier exe en r�sultat (en mode release). 2 minutes plus tard, je recompile exactement le m�me code, ce qui donne un autre exe.
    Les 2 exe fonctionnent �videmment de fa�on identique, leur taille est identique aussi, mais en comparant les 2 fichiers exe on voit qu'il y a quelques octets diff�rents par ci par l� (4 diff�rences en tout). Je voudrais bien savoir comment �viter cela. A priori ce n'est pas g�nant car le comportement est toujours le m�me, mais comme je cherche � faire un checksum sur l'exe, le fait qu'il y ait des diff�rences � chaque compilation me d�range fortement.

    Savez-vous comment l'�viter?

    Pour info, j'ai fait le test avec un petit projet Win32 Console qui affiche juste "Hello World". J'ai laiss� les options par d�faut qui font que je link avec uuid.lib. Pensant que �a venait de l�, j'ai ignor� uuid.lib dans les options de link, mais le probl�me subsiste...

    Toute aide est la bienvenue

    Merci,
    Eric

  2. #2
    Membre chevronn�
    Femme Profil pro
    D�veloppeur Java
    Inscrit en
    D�cembre 2009
    Messages
    236
    D�tails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : Finance

    Informations forums :
    Inscription : D�cembre 2009
    Messages : 236
    Par d�faut
    Bonjour,
    Utilises tu un IDE pour faire ton exe? Parfois les IDE peuvent rajouter des en t�te. Cela pourrait expliquer les diff�rences.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    25
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 25
    Par d�faut
    Citation Envoy� par Malinaka Voir le message
    Bonjour,
    Utilises tu un IDE pour faire ton exe? Parfois les IDE peuvent rajouter des en t�te. Cela pourrait expliquer les diff�rences.
    Ah oui, j'ai oubli� de pr�ciser �a: j'ai fait le test avec Visual Studio 2003 et 2008. Dans les 2 cas, quasiment le m�me r�sultat.
    Et effectivement c'est Visual Studio qui me met par d�faut la lib uuid.lib � l'�dition de liens.

    Eric

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

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

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Cela n'a rien � voir avec l'IDE, qui n'est qu'un �diteur am�lior�.

    La diff�rence entre les ex�cutables est tr�s probablement le timestamp de g�n�ration que le linker initialise pour avoir une tra�abilit� correcte des �l�ments compil�s.

    Ce n'est pas parce que le code source n'a pas chang� que le r�sultat est identique. La configuration du projet, de l'environnement de compilation sont au moins aussi important que le code source.

    Normalement, si aucune modification n'est faite dans les sources et dans la configuration des projets, VS ne recompile pas l'ex�cutable.

    Il r�g�n�re l'ex�cutable s'il y a des modifications ou si vous lui forcez la main.
    Et � chaque r�g�n�ration, le linker met un nouveau timestamp.

    Cela est extr�mement pratique quand vous utilisez un serveur de symbole et un serveur de code source h�berg� dans un gestionnaire de configuration logiciel comme TFS ou ClearCase.

    En r�sum�, si vous travaillez de mani�re professionnelle, c'est une obligation.

    Donc chercher � �viter cette fonctionnalit� serait s'interdire d'utiliser tous les outils modernes de tra�abilit� des codes sources.

    Pourquoi le processus de calcul du checksum ne fait-il pas parti int�grante du processus de g�n�ration de l'ex�cutable ?

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    25
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 25
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    Cela n'a rien � voir avec l'IDE, qui n'est qu'un �diteur am�lior�.

    La diff�rence entre les ex�cutables est tr�s probablement le timestamp de g�n�ration que le linker initialise pour avoir une tra�abilit� correcte des �l�ments compil�s.

    Ce n'est pas parce que le code source n'a pas chang� que le r�sultat est identique. La configuration du projet, de l'environnement de compilation sont au moins aussi important que le code source.

    Normalement, si aucune modification n'est faite dans les sources et dans la configuration des projets, VS ne recompile pas l'ex�cutable.

    Il r�g�n�re l'ex�cutable s'il y a des modifications ou si vous lui forcez la main.
    Et � chaque r�g�n�ration, le linker met un nouveau timestamp.

    Cela est extr�mement pratique quand vous utilisez un serveur de symbole et un serveur de code source h�berg� dans un gestionnaire de configuration logiciel comme TFS ou ClearCase.

    En r�sum�, si vous travaillez de mani�re professionnelle, c'est une obligation.

    Donc chercher � �viter cette fonctionnalit� serait s'interdire d'utiliser tous les outils modernes de tra�abilit� des codes sources.

    Pourquoi le processus de calcul du checksum ne fait-il pas parti int�grante du processus de g�n�ration de l'ex�cutable ?
    Oui, en effet VS ne r�g�n�re l�ex�cutable que parce que je lui force la main. Et je fais cela sans rien changer ni au code, ni aux options de compilation/link. Donc la logique voudrait que l�ex�cutable soit le m�me la 2�me fois, au d�tail pr�s du time stamp dont vous parlez.
    Je ne dit pas que cette fonction n'est pas utile, mais dans le cas qui nous occupe, je voudrais la d�brayer pour r�soudre mon probl�me bien sp�cifique � ce projet seulement. Est-ce possible?
    En fait, mon projet cible est une DLL qui s'auto-v�rifie au moment o� elle est charg�e pour s'assurer que son code et ses ressources n'ont pas �t� modifi�es. C'est une protection anti-piratage pour �viter que les hackers ne modifient le code de v�rification de ma cl�. Je sais que ce n'est pas infaillible, mais c'est toujours �a... DOnc s'il y a possibilit� de d�brayer le time stamp, ou s'il existe un autre moyen d'auto-v�rifier la DLL, je suis preneur

    Eric

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

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

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Pourquoi ne pas exclure le Timestamp de la v�rification ?

  7. #7
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 537
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 537
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    La diff�rence entre les ex�cutables est tr�s probablement le timestamp de g�n�ration que le linker initialise pour avoir une tra�abilit� correcte des �l�ments compil�s.
    il y a fort � parier que cela �a l'explication oui

Discussions similaires

  1. [HTML 4.0] 2 fichiers html avec codes identiques mais affichages diff�rents !?
    Par lololebricoleur dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 26
    Dernier message: 23/11/2013, 15h19
  2. Code identique, r�sultats diff�rents
    Par chalme dans le forum Langage
    R�ponses: 2
    Dernier message: 13/06/2012, 09h56
  3. R�ponses: 5
    Dernier message: 06/04/2008, 20h08
  4. Code SQL g�n�r� diff�rent d'attendu
    Par MxPx_23 dans le forum Hibernate
    R�ponses: 2
    Dernier message: 07/09/2006, 10h26
  5. [Conception] Deux codes identique mais un qui fonctionne pas
    Par fabrice88 dans le forum PHP & Base de donn�es
    R�ponses: 1
    Dernier message: 01/08/2006, 17h25

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