Library naming
--------------
Because The library is being built using various exception
Handling schemes and Compilers-and because the library
May isn't work reliably if these is mixed in an application,
Each different version of the library has it ' s own name.
Note 1:the incompatibility is really between EH implementations
of the different compilers. It should is possible to use the
Standard C version from either compiler with C + + applications
Built with a different compiler. If you use the an EH version of
The library, then you must use the same compiler for the
Application. This is another complication and dependency that
Can is avoided by using only the standard C library version.
Note 2:if You use a standard C pthread*.dll with a C + +
application, then any functions so define that is
Intended to is called via Pthread_cleanup_push () must be
__cdecl.
Note 3:the intention is to also name either the VC or GC
Version (it should be arbitrary) as pthread.dll, including
Pthread.lib and libpthread.a as appropriate. This is no longer
Likely to happen.
Note 4:the compatibility number is added so, applications
Can differentiate between binary incompatible versions of the
Libs and DLLs.
In general:
Pthread[vg]{se,ce,c}[c].dll
Pthread[vg]{se,ce,c}[c].lib
where
[VG] indicates the compiler
V-ms VC, or
G-gnu C
{Se,ce,c} indicates the exception handling scheme
Se-structured EH, or
Ce-c++ EH, or
C-no exceptions-uses setjmp/longjmp
C-dll compatibility number indicating ABI and API
Compatibility with applications built against
A snapshot with the same compatibility number.
See ' Version numbering ' below.
The name may also is suffixed by a ' d ' to indicate a debugging version
The library. e.g. PthreadVC2d.lib. Debugging versions contain
Additional information for debugging (symbols etc) and is often not
Optimised in any (compiled with optimisation turned off).
Examples:
PthreadVSE.dll (Msvc/seh)
PthreadGCE.dll (gnuc/c++ EH)
PthreadGC.dll (Gnuc/not dependent on exceptions)
PthreadVC1.dll (Msvc/not dependent on Exceptions-not binary
Compatible with PthreadVC.dll)
PthreadVC2.dll (Msvc/not dependent on Exceptions-not binary
Compatible with PthreadVC1.dll or PthreadVC.dll)
The GNU library archive file names has correspondingly changed to:
Libpthreadgcec.a
Libpthreadgcc.a
Pthread Dynamic Library naming rules