2011-12-20 23 views
10

Situazione:VS2010: collegamento in una singola libreria staticamente

Sto costruendo una libreria con VS2010 e ha una dipendenza da LibraryA. Sto solo usando una delle molte funzionalità che LibraryA offre, quindi voglio collegarlo in modo statico.

Tutto quello che sto leggendo su questo mi dice di impostare l'intero progetto per collegare staticamente contro MFC, che è qualcosa che non voglio fare. Sto bene con la mia libreria che si collega dinamicamente alle DLL di Windows; Voglio solo collegarmi staticamente solo a LibraryA.

A scherzare con le finestre delle opzioni, non mi sembra di vedere un'opzione del genere. È davvero tutto o niente?

Grazie, -Ben

+0

"link staticamente contro MVC" è difficile da interpretare. Intendi il CRT? Solo l'opzione/MD vs/MT è importante. Le DLL di Windows non sono un problema e sono sempre collegate dinamicamente, non c'è altra opzione. –

+0

La libreriaA viene come una DLL (con una lib per collegare) o solo una lib? Alcune librerie di terze parti vengono entrambe in modo da poter scegliere il modo in cui desideri collegarlo. Se è la tua libreria/codice puoi scegliere come costruirlo e collegarlo. –

+0

@ HansPassant - Il mio errore (era MFC). Vedi http://stackoverflow.com/questions/3230/how-do-you-pack-a-visual-studio-c-project-for-release - La risposta più alta ne parla. È vicino alla mia situazione, ma non è la stessa. – Ben

risposta

27

rispondere alla mia domanda proprio qui:

Tutto quello che devi fare per collegare staticamente una libreria in VS è:

1) Aggiungere il file LIB al elenco trovato nelle proprietà -> linker -> input: dipendenze aggiuntive.

2) Aggiungere la directory in cui si trova il file .lib nelle proprietà -> linker -> generale: Directory libreria aggiuntive.

Se il file .lib è una libreria collegata in modo statico, questo è tutto ciò che dovete fare.

Il motivo principale per cui ero confuso era che un file .lib poteva anche essere un file companion insieme a una DLL e non una stessa libreria statica.

+6

Non sei un idiota, sei (probabilmente) umano. Nota che se stai costruendo entrambi i progetti contemporaneamente (ad esempio nella stessa soluzione), puoi impostare un progetto in modo che dipenda dall'altro e Visual Studio importerà automaticamente la libreria senza la necessità di aggiungerla esplicitamente a "Ulteriori dipendenze". – adelphus

+2

Non un idiota ... grazie per aver scritto questa risposta, ne avevo bisogno. –

+0

Anche questo post mi ha aiutato: http://stackoverflow.com/questions/6402586/know-if-lib-is-static-or-import – meawoppl

Problemi correlati