Las bibliotecas estáticas no están vinculadas. Son solo una colección de archivos de objeto (* .obj o * .o) que se archivan juntos en un archivo de biblioteca (algo así como un archivo tar/zip) para facilitar al vinculador encontrar los símbolos que necesita.
Una lib estática puede llamar a funciones que no están definidas (pero que solo se declaran en un archivo de encabezado), ya que solo se compila. Luego, cuando vincula un exe o dll que usa la lib estática, tendrá que vincularse con otra biblioteca que proporcione la llamada desde la lib estática pero no definida en ella.
Si desea que el enlazador enlace automáticamente otras bibliotecas, la sugerencia de Stephen funcionará y es utilizada por bibliotecas de gran reputación como boost y stlport. Para hacer esto, coloque el pragma en el archivo de encabezado principal para la biblioteca estática. Debe incluir la biblioteca estática y sus dependientes.
Sin embargo, esta función de IMO está destinada a los escritores de librerías, donde la biblioteca se encuentra en la ruta de la biblioteca del sistema para que el vinculador la pueda encontrar fácilmente. También en el caso de boost y stlport utilizan esta característica para admitir versiones múltiples de las mismas bibliotecas con opciones definidas con #define
s donde diferentes opciones requieren diferentes versiones de la biblioteca para vincularse. Esto significa que es menos probable que los usuarios configuren el impulso de una manera y el enlace con una biblioteca configurada de otra manera.
Mi preferencia por el código de la aplicación es vincular explícitamente las piezas necesarias.
Acepto que debe tener cuidado con las dependencias de la biblioteca, pero creo que LoadLibrary es excesivo en este caso.Solo lo he requerido para arquitecturas tipo plugin. – iain