Le librerie statiche non sono collegate. Sono solo una raccolta di file oggetto (* .obj o * .o) archiviati insieme in un file di libreria (un po 'come un file tar/zip) per rendere più facile per il linker trovare i simboli di cui ha bisogno.
Una lib fisica può chiamare funzioni non definite (ma dichiarate solo in un file di intestazione), in quanto è solo compilata. Quindi, quando si collega un exe o una DLL che utilizza la lib statica, sarà necessario collegarsi a un'altra libreria che fornisce la chiamata dalla lib statica ma non definita in essa.
Se si desidera che il linker colleghi automaticamente altre librerie, il suggerimento di Stephen funzionerà e verrà utilizzato da librerie molto affidabili come boost e stlport. Per fare ciò metti il pragma nel file di intestazione principale per la libreria statica. Dovresti includere la libreria statica e i suoi dipendenti.
Tuttavia, IMO questa funzione è in realtà destinata ai writer di librerie, dove la libreria si trova nel percorso della libreria di sistema in modo che il linker possa trovarla facilmente. Inoltre, nel caso di boost e stlport, utilizzano questa funzionalità per supportare più versioni delle stesse librerie con opzioni definite con #define
s, in cui diverse opzioni richiedono il collegamento di diverse versioni della libreria. Ciò significa che gli utenti hanno meno probabilità di configurare l'incremento in un modo e il collegamento con una libreria configurata con un altro.
La mia preferenza per il codice dell'applicazione è di collegare esplicitamente le parti richieste.
Sono d'accordo che si dovrebbe fare attenzione con le dipendenze della libreria, ma penso che LoadLibrary sia eccessivo in questo caso.L'ho solo richiesto per le architetture dei tipi di plugin. – iain