pthread version win32? (Mangouste)
-
12-10-2019 - |
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 !!!
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).