c++ visual-studio boost shared-libraries static-libraries

c++ - Mejora de la creación de bibliotecas: diferencia entre las opciones de enlace y tiempo de ejecución



visual-studio boost (1)

runtime-link refiere a cómo se vincula el tiempo de ejecución de su compilador. Es decir, corresponde a la opción Multithreaded DLL Multithreaded frente a Multithreaded DLL VC. Runtime se refiere a los componentes necesarios para usar las bibliotecas estándar disponibles con su compilador.

Probablemente haya visto los archivos de enlace dinámico en algún momento: MSVCRTXX.DLL (tiempo de ejecución de C) y MSVCPXX.DLL (biblioteca estándar de C ++), MFCXX.DLL (clases principales de MFC). Las contrapartes estáticas son LIBC y LICBP (consulte here la tabla de la biblioteca)

La opción de enlace de tiempo de ejecución que utiliza al crear Boost debe coincidir con la opción cuando esté utilizando el código de su cliente. De lo contrario, obtendrá errores debido al tiempo de ejecución no coincidente en el momento del enlace o al ejecutar su programa.

Al crear su programa para utilizar el tiempo de ejecución del enlace dinámico, debe incluir el VC redistribuible al implementar su aplicación.

link refiere a la forma en que la biblioteca de impulso a la que estará vinculado su edificio, ya sea como una biblioteca de enlace estática o dinámica.

Estoy tratando de construir bibliotecas boost en Windows 7 con MSVC (VS 2010).

Me he encontrado con las opciones runtime-link y link en las opciones de línea de comandos de bjam. Me gustaría saber cómo se usan y cuál es la diferencia exacta entre ellos.

He construido la biblioteca Boost Regex usando esta línea de comando

bjam --with-regex variant = release --build-options = complete

produjo estos archivos:

1) boost_regex-vc100-mt-1_47.dll (Biblioteca de importación: boost_regex-vc100-mt-1_47.lib)

2) libboost_regex-vc100-mt-1_47.lib

3) libboost_regex-vc100-mt-s-1_47.lib

4) libboost_regex-vc100-s-1_47.lib

¿Cuál es la diferencia entre 2 y 3 archivos .lib? Ambos son librerías estáticas. He revisado el documento de Boost pero no encontré mucha explicación en eso.

TIA