Frage

Bitte sagen Sie mir, was für einen Unterschied zwischen Pthread Versionen: VC2, VCE2 und VSE2? Wie entscheiden, welche von ihnen mich mit Visual C ++ Express 2010 für Mongoose Webserver Bibliothek verwenden müssen?

Danke !!!

War es hilfreich?

Lösung

  • VCE - MSVC DLL mit C ++ Ausnahmebehandlung
  • VSE - MSVC dll mit strukturierter Ausnahmebehandlung
  • VC - MSVC DLL mit C Bereinigungscode

, welche Sie mit VC ++ Express 2010 verwenden möchten, würde hängt davon ab, wie Sie Pthread sauber wollen behandelt werden. Wenn Sie dies dem Mongoose Webserver sind die Verknüpfung (die ich nicht kenne), ich glaube, Sie werden die Ausnahmebehandlung Modell verwenden möchten, wie der Code mit kompiliert wird.

Die pThreads Win32-Bibliothek geht in ein gutes Stück Detail:

Bibliothek Namensgebung

Da die Bibliothek gebaut wird mit verschiedener Ausnahmebehandlung Systeme und Compiler - und weil Die Bibliothek kann nicht zuverlässig funktionieren, wenn diese sind in einer Anwendung gemischt, jede andere Version der Bibliothek hat seinen eigenen Namen.

Anmerkung 1: die Unvereinbarkeit ist wirklich zwischen EH Implementierungen der verschiedene Compiler. Es sollte sein möglich, die Standard-C-Version zu verwenden von beiden mit C ++ Kompilierer Anwendungen mit einem anderen gebaut Compiler. Wenn Sie eine EH-Version verwenden die Bibliothek, dann müssen Sie die verwenden gleiche Compiler für die Anwendung. Dies ist eine weitere Komplikation und Abhängigkeit, die durch vermieden werden können nur unter Verwendung der Standard-C-Bibliothek Version.

Hinweis 2: Wenn Sie mit einem Standard-C Pthread * Dll mit einer C ++ Anwendung, alle Funktionen dann, dass Sie definieren die sollen über aufgerufen werden pthread_cleanup_push () muss sein __cdecl.

Hinweis 3: war die Absicht, auch Namen entweder die VC oder GC-Version (es soll willkürlich) als pthread.dll, einschließlich pthread.lib und libpthread.a wie angemessen. Das ist nicht mehr wahrscheinlich.

Hinweis 4: die Kompatibilitätsnummer war hinzugefügt, so dass Anwendungen differentiate zwischen binären inkompatible Versionen der Bibliotheken und dlls.

Generell gilt: pthread [VG] {SE, CE, C} c.dll Pthread [VG] {SE, CE, C} c.lib

Dabei gilt: [VG] den Compiler zeigt V - MS VC oder G - GNU C

{SE, CE, C} gibt die Ausnahme Handhabung Schema SE - Strukturierte EH, oder CE - C ++ EH oder C - keine Ausnahmen - Anwendungen setjmp / longjmp

c - DLL Kompatibilitätsnummer anzeigt ABI und API Kompatibilität mit Anwendungen verwendet werden gegen jeder Schnappschuss mit der gleichen Kompatibilitätsnummer. Siehe 'Version Nummerierung' weiter unten.

Der Name kann auch durch ein ‚d‘ nachgestellt werden um anzuzeigen, eine Debug-Version der Bibliothek. Z.B. pthreadVC2d.lib. Debug-Versionen enthalten zusätzliche Informationen für die Fehlersuche (Symbole etc) und oft nicht optimiert werden eine Möglichkeit, (mit Optimierung kompiliert ausgeschaltet).

Zum Beispiel: pthreadVSE.dll (MSVC / SEH) pthreadGCE.dll (GNUC / C ++ EH) pthreadGC.dll (GNUC / nicht abhängig von Ausnahmen) pthreadVC1.dll (MSVC / nicht abhängig von Ausnahmen - nicht binär kompatibel mit pthreadVC.dll) pthreadVC2.dll (MSVC / nicht abhängig von Ausnahmen - nicht binärkompatibel mit pthreadVC1.dll oder pthreadVC.dll)

Die GNU-Bibliothek Archivdateinamen haben entsprechend geändert:

libpthreadGCEc.a libpthreadGCc.a

Wenn Sie sehen wollen, was die Unterschiede für jede dieser Sanierung Modelle sind, suchen Sie nach „__CLEANUP“ in der pThreads Win32 Quelle (es gibt nur wenige Orte, an denen die verschiedenen sauber Modelle ins Spiel kommen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top