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.
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
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.
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
Partager