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 :

Compatibilité vs c++ 2005 et 2008


Sujet :

Visual C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 28
    Points
    28
    Par défaut Compatibilité vs c++ 2005 et 2008
    Bonjour,

    Je dois compiler un projet sous visual 2005 SP1. une dépendances a été compilé avec visual 2008.

    1/ J'ai donc commencé par installer le patch KB949009-X86 pour pouvoir linker avec le .lib compilé en 2008. (http://support.microsoft.com/kb/949009)
    ca a marché, plus d'erreur de linkage.

    2/ j'ai recompilé (en 2005) toutes mes dépendance (dont j'ai les sources) et l'exe apres avoir appliqué le patch, tout link toutjours bien, mais au lancement :
    - en debug j'ai un message d'erreur et la console me dit "LDR: LdrpWalkImportDescriptor() failed to probe" ./ma_dll_compile_en_2008
    - en release: heap corruption

    3/ j'ai donc ouvert la dll 2008 avec visual, et effectivement il n'y a pas dans son manifest d'entré pour visual 2005. il ressemble a ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <dependency>
    <dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.VC90.DebugCRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='...' />
    </dependentAssembly>
    </dependency>
    alors que dans les autres dll que je compile avec 2005 j'ai un assembly vs 8, a savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <dependency>
    <dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='...' />
    </dependentAssembly>
    </dependency>
    4/ je suppose qu'il faudrait que j'ai les deux type d'assembly présent dans la dll 2008, pour qu'elle puisse etre utilisé par des binaire compilé en 2005. c'est donc la que je suis bloqué, comment rajouter cette assembly dans la dll 2008 ?

    a la bourrin ca passe ? ou y a t'il un autre moyen de faire ?
    (sachant que je n'ai pas acces aux sources de la lib compile en 2008 évidement)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 157
    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 157
    Points : 12 271
    Points
    12 271
    Par défaut
    Encore une conception bancale d'API de dll à base classes publics et de gestions non étanche des objets entre le client de la dll et la dll elle-même.


    - Refaire correctement l'API de la Dll, en un mot apprendre le b.a-ba du métier au fournisseur de la dll VS2008.
    - Compiler avec VS2008
    - Compiler avec VS2005 mais avec les headers et les libs de VS2008.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 28
    Points
    28
    Par défaut
    Salut,

    les deux premieres options ne sont malheureusement pas possible pour moi, car je n'ai aucun controle ni source sur la dll que je veux utiliser, et que mon employeur n'a pas de license autre que 2005 pour l'instant.

    la troisieme option est ce que j'ai fait, pour ca que j'ai mis le patch KB949009, le link passe bien, mais a l'execution il me jette justement.

    d'ailleur, j'ai essaye de bouriner l'assembly 2005 dans la dll 2008, ca ne resoud rien comme je m'y attendais.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 157
    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 157
    Points : 12 271
    Points
    12 271
    Par défaut
    La Version Express de Visual Stucio est gratuite.
    Si vous n'utilisez pas les MFC, je vous invite à upgrader votre VS.

    Vérifiez que vous n'utilisez plus la C-Runtime v8 quand vous utilisez les libs de VS2008 qui utilisent la version 9 de la C-Runtime.

    Si vous avez des adhérences à la version 8, concevez des dll utilisant la v9 avec des interfaces n'utilisant pas de classes et qui ne transfèrent pas d'objet.
    Vous aurez un environnement C-Runtime v8 et un environnement v9 étanche par l'utilisation de ces dll.

Discussions similaires

  1. Compatibilité SQL Server 2005/2008 avec Windows 2003/2008
    Par fred_04510 dans le forum Administration
    Réponses: 6
    Dernier message: 22/09/2011, 08h54
  2. retro compatibilité SQL Server 2005 / Windows 2008
    Par j6m dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/06/2011, 12h04
  3. compatibilité entre visual studio 2005 et 2008
    Par pauvremen dans le forum C#
    Réponses: 3
    Dernier message: 26/05/2008, 14h26
  4. erreur de link au passage de visual studio 2005 vers 2008
    Par blueLight dans le forum Visual C++
    Réponses: 2
    Dernier message: 21/04/2008, 15h02
  5. 2005 ou 2008 ?
    Par Papy214 dans le forum Visual Studio
    Réponses: 12
    Dernier message: 31/12/2007, 17h10

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