none
Visual 6 vers Visual 2008 - Génération de symbole RRS feed

  • Discussion générale

  • Bonjour,

    J'ai une librairie générée sous visual sutdio 6. Ce .lib possède des fonctions acceptant en argument une donnée de type structure. Lorsque je compile mon projet faisant appel aux fonctions de la librairie, je me retrouve avec des erreurs :

    public: __thiscall CLib::CLib(int,int,struct CLib::<unnamed-type-aut> * const,struct CLib::trans const * const,char * const)" (??0CLib@@QAE@HHQAU<unnamed-type-auto>@0@QBUtrans@0@QAD@Z)

    La librairie compilé sous visual 6 génère un nom de fonction (ouvert avec un éditeur hexadécimal)

    ??0CLib@@QAE@HHQAU__unnamed@0@QBUtrans@0@QAD@Z

    Mon problème vient du fait que le nom cherché ??0CLib@@QAE@HHQAU<unnamed-type-auto>@0@QBUtrans@0@QAD@Z est différent du nom généré.
    Y a-t-il une option de compatibilité dans Visual Studio 2008 permettant d'appeler des fonctions dans une librairie avec un nom généré sous Visual Studio 6 ?

    Merci pour votre aide.
    Cdt.

     

    vendredi 3 septembre 2010 08:48

Toutes les réponses

  • En utilisant le undname.exe de mon VS2010, le second nom est "inconnu".

    En voyant le message d'erreur, j'ai impression que le compilateur pense qu'il à une classe template CLib<T> en plus de la classe CLib.

    L'interprétation des templates C++ a énormément changé depuis VC++6. Ces changements ont été fait pour une meilleur conformité aux normes.

    Déjà que je n'aime pas les export C++, alors avec des templates dans la boucle.

    Je pense qu'il faut que vous modifiiez les fichiers d'en-tête de votre projet pour que l'ambiguïté sur CLib disparaisse.

     

    Pouvez-vous nous poster votre fichier CLib.h ?


    Paul Bacelar, Ex - MVP VC++
    samedi 4 septembre 2010 11:39
    Modérateur
  • Bonjour,

    Finalement, j'ai recompilé ma librairie avec Visual Studio 2008 et cela fonctionne normalement.
    A la base j'aurais préféré ne rien modifier ou recompiler pour rester sur la même version de la librairie. C'est pour çà que je demandais s'il y avait une option de compatibilité.

    Merci pour votre aide.

    vendredi 10 septembre 2010 08:24
  • Attention, si vous n'analysez pas sérieusement ce problème, vous allez être coincé pour les montées de version du compilateur.
    Paul Bacelar, Ex - MVP VC++
    vendredi 10 septembre 2010 15:48
    Modérateur