Question

(La question initiale a été posée à cet endroit: http: //www.ogre3d .org / phpBB2 / viewtopic.php? t = 44832 )

Quelqu'un a demandé: "Bien que je veuille tout construire dans vs2008 (VC9), le SDK PhysX est construit avec vs2005 (VC8). Est-ce que cela poserait des problèmes, en utilisant toutes les bibliothèques compilées avec vc9 et en combinaison avec cette bibliothèque vc8? "

J’ai répondu que la veille, j’avais essayé d’utiliser un fichier .lib (et un fichier .dll) généré avec VC8 et de l’inclure dans un fichier exe compilé vc9, le compilateur ne pouvait pas ouvrir le fichier .lib.

Maintenant, d’autres ont répondu qu’ils l’avaient fait sans problème ....

Je ne trouve pas les informations sur la compatibilité des libs entre vc9 et vc8.

alors ... Aide?

Était-ce utile?

La solution

Le format de lib est COFF ( http: // msdn.microsoft.com/en-us/library/7ykb2k5f(VS.71).aspx ), COFF est également utilisé au format PE. Ainsi, je m'attendrais à ce que la plupart, sinon toutes les bibliothèques construites avec vc8 puissent être liées à vc9.

Cependant, j'ai trouvé un fil sur msdn où MS semble ne pas garantir que les bibliothèques compilées avec VC8 seront bien liées avec VC9. http: // social .msdn.microsoft.com / Forums / fr-fr / vcgeneral / thread / 8042a534-aa8b-4f99-81ee-e5ff39ae6e69 / )

Compte tenu de ces deux informations, je conclurais ceci: Bien que MS ne garantisse pas la compatibilité totale à 100%, je pense que dans la plupart des cas, lier une vc8 lib à vc9 fonctionnera.

J'espère que ça aide. P.S. Vous écrivez "le compilateur n'a pas pu ouvrir le fichier .lib". L’éditeur de liens est celui qui essaie d’ouvrir les bibliothèques à lier, pas le compilateur.

Autres conseils

Cela fonctionne, mais vous rencontrez des problèmes lors du partage d'objets CRT / STL.

Ainsi, lorsque vous faites un "nouveau" dans une bibliothèque vc8 et que vous le retournez à une fonction vc9, qui à son tour supprime cet objet, vous obtenez une assertion de la suppression.

 T* funcInVc8Lib()
 {
     return new T();
 }

 void funcInVC9Program()
 {
     T* p = funcInVc8Lib();
     // ...
     delete p; // it should at least assert here (in _CrtIsValidHeapPtr() )
 }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top