2012-10-30 19 views
6

Ho un progetto che si collega a entrambi OpenCV e cvBlob, ma cvBlob link ad OpenCV. Sia OpenCV che cvBlob sono costruiti come librerie statiche.Il collegamento di una libreria statica genera due volte una duplicazione?

Il mio file eseguibile dispone di 2 copie di tutte le funzioni OpenCV utilizzate sia dal mio codice che da cvBlob oppure il linker lo rileva e rimuove la ridondanza?

cvBlob e il mio codice di collegamento agli stessi file lib OpenCV.

+1

Questo è in realtà una situazione molto comune - * * vacanza collegamenti al tubo catodico, per esempio. Il linker lo gestisce senza problemi. –

+0

Cosa succede se nel caso ci sono due versioni differenti della stessa libreria? È non deterministico che verrà effettivamente utilizzato? –

+2

Se avete * diversi file .lib * che implementano le stesse funzioni, si otterrà "simbolo duplicato" errori/avvisi in fase di collegamento. – cbranch

risposta

4

Se entrambi link per gli stessi file lib, allora c'è solo una copia nel file eseguibile finale.