Question

S'il vous plaît me dire quelle différence entre les versions pthread: VC2, Vce2 et VSE2? Comment choisir lequel d'entre eux, je dois utiliser avec Visual C ++ Express 2010 pour la bibliothèque de serveur web Mongoose?

Merci !!!

Était-ce utile?

La solution

  • VCE - dll MSVC avec gestion des exceptions de C
  • VSE - dll MSVC avec gestion structurée des exceptions
  • VC - dll MSVC avec le code de nettoyage C

Lequel vous voudriez utiliser avec VC ++ Express 2010 dépend de la façon dont vous voulez pthread nettoyage à traiter. Si vous liez ceci au serveur Web Mongoose (que je ne suis pas au courant), je pense que vous aurez envie d'utiliser le modèle de gestion des exceptions comme ce code est compilé avec.

La bibliothèque pthreads Win32 va dans un peu de façon assez détaillée:

  

nommage bibliothèque

     

Parce que la bibliothèque est en cours de construction   en utilisant diverses manipulations d'exception   les systèmes et les compilateurs - et parce que   la bibliothèque peut ne pas fonctionner correctement si   ceux-ci sont mélangés dans une application,   chaque version différente de la bibliothèque   elle a son propre nom.

     

Note 1: l'incompatibilité est vraiment   entre les mises en œuvre de la EH   différents compilateurs. Ça devrait être   possible d'utiliser la version standard C   soit de compilateur avec C ++   applications construites avec un autre   compilateur. Si vous utilisez une version EH   la bibliothèque, vous devez utiliser la   même compilateur pour l'application.   Ceci est une autre complication et   dépendance qui peut être évité par   en utilisant uniquement la bibliothèque standard C   la version.

     

Note 2: si vous utilisez une norme C   pthread * .dll avec une application de C ++,   puis toutes les fonctions que vous définissez   qui sont destinées à être appelées via   pthread_cleanup_push () doit être   __cdecl.

     

Note 3: l'intention était de nommer aussi   soit la version VC ou GC (il se doit   arbitraires) en tant pthread.dll,   y compris pthread.lib et libpthread.a   le cas échéant. Ce n'est plus   susceptible de se produire.

     

Note 4: le numéro de compatibilité a été   ajouté pour que les applications peuvent   la distinction entre binaire   versions incompatibles des libs et   dll.

     

En général: pthread [VG] {SE, CE, C} c.dll     pthread [VG] {SE, CE, C} c.lib

     

où: [VG] indique le compilateur     V - MS VC, ou G - GNU C

     

{SE, CE, C} indique l'exception   système de manutention SE - structuré EH,   ou CE - C ++ EH, ou C - sans exception   - utilisations setjmp / longjmp

     

c - compatibilité DLL Numéro   indiquant ABI et API           la compatibilité avec les applications contre           un instantané avec le même numéro de compatibilité.           Voir 'numérotation Version' ci-dessous.

     

Le nom peut aussi être suffixé par un « d »   pour indiquer une version de débogage du   bibliothèque. Par exemple. pthreadVC2d.lib.   Les versions de débogage contiennent plus   des informations de débogage (symboles   etc) et sont souvent optimisés   aucune façon (compilé avec l'optimisation   désactivé).

     

Par exemple:     pthreadVSE.dll (MSVC / SEH)     pthreadGCE.dll (GNUC / C ++ EH)     pthreadGC.dll (GNUC / pas dépendante   exceptions) pthreadVC1.dll (MSVC / non   dépendant des exceptions - et non binaire             compatible avec pthreadVC.dll)     pthreadVC2.dll (MSVC / pas dépendante   exceptions - non binaires compatibles   avec pthreadVC1.dll ou pthreadVC.dll)

     

Les noms de fichiers d'archives de la bibliothèque GNU   ont en conséquence changé:

     

libpthreadGCEc.a libpthreadGCc.a

Si vous voulez voir quelles sont les différences pour chacun de ces propres modèles vers le haut, recherchez « __CLEANUP » dans la pthreads source de Win32 (il n'y a que quelques endroits où les différents modèles de haut propres entrent en jeu).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top