Bonjour,
je dispose d'un fichier .lib construit avec MS VC2008 et j'aimerais l'utiliser dans un project VC6 : est-ce possible ? dois-je m'attendre à des complications ?
Merci pour toute aide,
Bonne et heureuse année 2010,
Lek.
Bonjour,
je dispose d'un fichier .lib construit avec MS VC2008 et j'aimerais l'utiliser dans un project VC6 : est-ce possible ? dois-je m'attendre à des complications ?
Merci pour toute aide,
Bonne et heureuse année 2010,
Lek.
Si c'est une lib de fonctions C, c'est sûr et certain. Si c'est une lib de fonctions et classes C++, ce n'est pas sûr à cause de la décoration des noms qui n'est pas forcément la même dans Visual C++ 6 et Visual C++ 2008 (et il n'y a pas de solution pour contourner le problème à part convertir la lib VC9 en lib VC6, mais je ne connais pas d'utilitaire pour faire ça).
Merci, c'est ce que je pensais mais je voulais confirmation.
Il s'agirait d'une lib C donc pas de souci ;-)
@+,
Lek.
Ben si, tu peux avoir des soucis... VS2008 a introduit des changements avec ruptures, notamment sur les fonctions standard (existence d'une version sécurisée) et d'autres éléments (comme l'utilisation d'un time_t sur 64 bits). Ces éléments n'existant pas sous VC6, c'est le casse-gueule assuré derrière si tu les as utilisées.
Donc, ton .LIB peut te poser les problèmes suivants :
- Impossibilité de "comprendre" le header VS2008 avec VC6 (définitions manquantes).
- Erreur au link final, requérant la CRT de VS2008 (qui entrera en conflit avec celle de VC6, d'ailleurs).
- Changement de taille de certains types, ce qui causera des crashs à l'exécution si, par miracle, le link avait pu être fait malgré tout.
L'inverse (lib VC6 => VS2008) est normalement possible si tu ne tapes pas dans les changements avec rupture (comme le time_t) : la CRT de VS2008 a bien entendu au moins toutes les fonctions de celles de VC6, et doit normalement permettre une édition de liens correcte.
Merci Mak Lak,
effectivement les changements dont tu parles me disent quelque chose, mais il me semble que l'on peut rajouter une directive de précompilation pour éviter d'utiliser les changements de crt...
En tous cas merci pour ta remarque : cela évitera de trop chercher si le cas se présente.
@+,
Lek.
En fait, tu éviteras surtout d'utiliser les types et méthodes nouvellement introduites.
Pour info, tu as la macro _USE_32BIT_TIME_T à définir, et pour les versions sécurisées de la CRT, il faut :
- Définir _CRT_SECURE_NO_WARNINGS et, éventuellement, _CRT_NONSTDC_NO_WARNINGS pour ne plus avoir les warnings,
- Ne PAS définir la macro _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES, sinon tu vas activer les versions sécurisées sans même t'en rendre compte.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager