Domanda

La prego di dirmi che differenza tra le versioni pthread: VC2, Vce2 e VSE2? Come scegliere quale di loro devo usare con Visual C ++ Express 2010 per la libreria di server web Mongoose?

Grazie !!!

È stato utile?

Soluzione

  • VCE - MSVC DLL con C ++ gestione delle eccezioni
  • VSE - MSVC dll con la gestione delle eccezioni strutturata
  • VC - MSVC DLL con codice C di pulitura

Quale che ci si vuole utilizzare con VC ++ Express 2010 dipende da come si desidera pthread fino pulito per essere gestito. Se stai collegando questo al server web Mongoose (che io non sono a conoscenza), credo che si vorrà utilizzare il modello di gestione ad eccezione di quella del codice è compilato con.

La biblioteca pthreads Win32 va in un bel po 'di dettagli:

denominazione Biblioteca

Perché la libreria è in costruzione utilizzando vari gestione delle eccezioni schemi e compilatori - e perché la biblioteca non può funzionare correttamente se Questi sono mescolati in un'applicazione, ogni versione diversa della libreria ha il proprio nome.

Nota 1: l'incompatibilità è davvero tra EH implementazioni diversi compilatori. Dovrebbe essere possibile utilizzare la versione standard C da entrambi compilatore con C ++ applicazioni costruite con un diverso compilatore. Se si utilizza una versione di EH la biblioteca, quindi è necessario utilizzare il compilatore stesso per l'applicazione. Questa è un'altra complicazione e dipendenza che può essere evitato utilizzando solo la libreria standard C versione.

Nota 2: se si utilizza uno standard C pthread * DLL con un'applicazione C ++, poi le funzioni definite dall'utente che sono destinati ad essere chiamato tramite pthread_cleanup_push () deve essere __cdecl.

Nota 3: l'intenzione era quella anche il nome sia la versione VC o GC (dovrebbe arbitrario) come pthread.dll, compresi pthread.lib e libpthread.a come appropriato. Questo non è più probabile che accada.

Nota 4: il numero compatibilità era aggiunto in modo che le applicazioni possono differenziare tra binario versioni incompatibili delle librerie e dll.

In generale: pthread [VG] {SE, CE, C} C.dll pthread [VG] {SE, CE, C} c.lib

dove: [VG] indica il compilatore V - MS VC, o G - GNU C

{SE, CE, C} indica l'eccezione movimentazione schema SE - Strutturato EH, o CE - C ++ EH, o C - senza eccezioni - usi setjmp / longjmp

c - DLL compatibilità numero indicando ABI e API compatibilità con le applicazioni addossate qualsiasi istantanea con lo stesso numero compatibilità. Vedere 'numerazione delle versioni' di seguito.

Il nome può anche essere suffisso una 'd' per indicare una versione di debug del biblioteca. Per esempio. pthreadVC2d.lib. le versioni di debug contengono ulteriori Informazioni per il debug (simboli ecc) e spesso non sono ottimizzate in qualsiasi modo (compilato con l'ottimizzazione disattivato).

Ad esempio: pthreadVSE.dll (MSVC / SEH) pthreadGCE.dll (GNUC / C ++ EH) pthreadGC.dll (GNUC / non sul dipendente eccezioni) pthreadVC1.dll (MSVC / Non dipendente da eccezioni - non binaria compatibile con pthreadVC.dll) pthreadVC2.dll (MSVC / non sul dipendente eccezioni - non è compatibile a livello binario con pthreadVC1.dll o pthreadVC.dll)

L'GNU nomi dei file Archivio Biblioteca sono corrispondentemente modificato in:

libpthreadGCEc.a libpthreadGCc.a

Se volete vedere quali siano le differenze per ciascuno di questi modelli su pulito, cercare "__CLEANUP" nel pthreads Win32 fonte (ci sono solo un paio di posti in cui i diversi modelli fino puliti entrano in gioco).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top