J'ai un assez grand et complexe ensemble de programmes à mettre en communication de VC8 à VC9. Un des modules a un certain nombre de typedefs en couches, ce qui oblige le compilateur à générer un avertissement C4503 (nom décoré tronqué). Le fichier LIB généré ne sera pas correctement lié aux autres modules du projet. VC8 n'a eu aucun problème avec cela, ce qui m'a amené à conclure que le processus de décoration a changé pour générer des noms encore plus longs, ou que la limite interne pour la longueur d'un nom décoré a diminué. Quel est le meilleur moyen de surmonter cela?Comment augmenter la longueur autorisée du nom décoré dans VC9 (MSVC 2008)?
Pour des raisons de code héritées, la suggestion MSDN de remplacer typedefs par des structures n'est pas pratique.
Les typedefs en question sont (code aseptisé):
enum Type{
TYPE_COUNT,
TYPE_VALUE
};
typedef MyVector< Container*, CriticalSectionLock > Containers;
typedef MyVector< MyClassType*, CriticalSectionLock >::const_iterator const_iterator_type;
typedef MyVector< stl::pair< string, Type > >::const_iterator const_iterator_def;
typedef MyVector< Container** >::const_iterator const_iterator_container;
typedef MyVector< stl::pair < MyBase*, MyVector< stl::pair< Container**, Containers* > > > >::const_iterator const_iterator;
Content que je ne travaille pas sur ce code. – Kibbee
Si le nom décoré tronqué est tronqué de la même manière lors de la construction de la bibliothèque que lors de la construction du module lié à la bibliothèque, ne continuerait-il pas à lier correctement même en présence de cet avertissement? Ou avez-vous plusieurs symboles qui ne diffèrent qu'après le point de troncature? – GBegen