Descripción de las bibliotecas de C y C++ predeterminado que un programa se vinculará con cuando creada con Visual C++


Resumen


Este artículo describe las bibliotecas predeterminadas LIBC [D]. LIB, LIBCMT [D]. LIB, LIBCI [D]. LIB, LIBCIMT [D]. LIB, LIBCP [D]. LIB, LIBCPMT [D]. LIB, MSVCRT [D]. LIB, MSVCIRT [D]. LIB y MSVCPRT [D]. LIB que un programa se vinculará con cuando generada con Visual C++.

Más información


Al generar una versión de lanzamiento (o depuración) del proyecto en Visual C++, una de las bibliotecas en tiempo de ejecución de C básicas (LIBC [D]. LIB, LIBCMT [D]. LIB y MSVCRT [D]. LIB) está vinculado de forma predeterminada, dependiendo de la opción del compilador elegir (un único subproceso < ML [d] >, < MT [d] > multiproceso, o DLL multiproceso < MD [d] >). También se pueden vincular una biblioteca de la biblioteca estándar de C++ o de la antigua biblioteca iostream dependiendo de los encabezados que se utiliza en el código. Por ejemplo, considere los siguientes casos:

Caso 1: Ejemplo de programa test1.cpp

// test1.cppvoid main(){}
  • Si genera test1.cpp mediante el /ML (o /MLdpara una versión de depuración) opción del compilador, el programa se vincula con LIBC. LIB (o LIBCD. LIB, para la versión de depuración), asimismo a las otras bibliotecas.
    Nota: Se quitaron los /ML y /MLd opciones del compilador de biblioteca para bibliotecas estáticas de un único subproceso en Visual C++ 2005 y en versiones posteriores de Visual C++.
  • Si genera test1.cpp mediante el/MT (o /mtd/MTd, para una versión de depuración) opción del compilador, el sistema vinculará con LIBCMT. LIB (o LIBCMTD. LIB, para la versión de depuración), asimismo a las otras bibliotecas.
  • Si genera test1.cpp mediante el /MD (o MDd, para una versión de depuración) opción del compilador, el sistema vinculará con MSVCRT. LIB (o MSVCRTD. LIB, para la versión de depuración), asimismo a las otras bibliotecas. En este caso, el programa será dependiente de MSVCRT. DLL (o MSVCRTD. DLL para la versión de depuración).

Caso 2: Ejemplo programa test2.cpp

   // test2.cpp   #include <iostream>   void main()   {   }
  • Si genera test2.cpp mediante el /ML (o /MLdpara una versión de depuración) opción del compilador, el programa se vincula con LIBC. LIB (o LIBCD. LIB para la compilación de depuración) y LIBCP. LIB (o LIBCPD. LIB, para la versión de depuración), asimismo a las otras bibliotecas.
    Nota: Se quitaron los /ML y /MLd opciones del compilador de biblioteca para bibliotecas estáticas de un único subproceso en Visual C++ 2005 y en versiones posteriores de Visual C++.
  • Si genera test2.cpp mediante el/MT (o /mtd/MTd, para una versión de depuración) opción del compilador, el sistema vinculará con LIBCMT. LIB (o LIBCMTD. LIB para la compilación de depuración) y LIBCPMT. LIB (o LIBCPMTD. LIB, para la versión de depuración), asimismo a las otras bibliotecas.
  • Si genera test2.cpp mediante el /MD (o MDd, para una versión de depuración) opción del compilador, el sistema vinculará con MSVCRT. LIB (o MSVCRTD. LIB para la compilación de depuración) y MSVCPRT. LIB (o MSVCPRTD. LIB, para la versión de depuración), asimismo a las otras bibliotecas. Para Microsoft Visual C++ 2008, el programa será dependiente de MSVCR90. DLL y MSVCP90. DLL (o MSVCR90D. DLL y MSVCP90D. DLL para la versión de depuración). Para Microsoft Visual C++ 2005, el programa será dependiente en el archivo MSVCR80. DLL y MSVCP80. DLL (o MSVCR80D. DLL y MSVCP80D. DLL para la versión de depuración). Para Microsoft Visual C++ 2003, el programa será dependiente en MSVCR71. DLL y MSVCP71. DLL (o MSVCR71D. DLL y MSVCP71D. DLL para la versión de depuración). Para Microsoft Visual C++ 2002, el programa será dependiente en MSVCR70. DLL y MSVCP70. DLL (o MSVCR70D. DLL y MSVCP70D. DLL para la versión de depuración). Para Microsoft Visual C++ 6.0, el programa se puede depender de MSVCRT. DLL y MSVCP60. DLL (o MSVCRTD. DLL y MSVCP60D. DLL para la versión de depuración). Para Microsoft Visual C++ 5.0, el programa será dependiente de MSVCRT. DLL y MSVCP50. DLL (o MSVCRTD. DLL y MSVCP50D. DLL para la versión de depuración). Para Microsoft Visual C++ 4.2, el programa será dependiente de MSVCRT. DLL (o MSVCRTD. DLL para la versión de depuración) y MSVCPRT. LIB (o MSVCPRTD. LIB, para la versión de depuración).

Caso 3: Ejemplo de programa test3.cpp

Nota: Los archivos de encabezado de secuencia que tienen la extensión. h (incluyen < useoldio.h >) han quedado obsoletas en Visual C++ 2002 y se han quitado de Visual C++ 2005 y en Visual C++ 2003. Por lo tanto, el código siguiente no funciona en una versión de Visual C++ posterior a Visual C++ 2002.
// test3.cpp#include <iostream.h>void main(){}
  • Si genera test3.cpp mediante el /ML (o /MLdpara una versión de depuración) opción del compilador, el programa se vincula con LIBC. LIB (o LIBCD. LIB para la compilación de depuración) y LIBCI. LIB (o LIBCID. LIB, para la versión de depuración), asimismo a las otras bibliotecas.
    Nota: Se quitaron los /ML y /MLd opciones del compilador de biblioteca para bibliotecas estáticas de un único subproceso en Visual C++ 2005 y en versiones posteriores de Visual C++.
  • Si genera test3.cpp mediante el/MT (o /mtd/MTd, para una versión de depuración) opción del compilador, el sistema vinculará con LIBCMT. LIB (o LIBCMTD. LIB para la compilación de depuración) y LIBCIMT. LIB (o LIBCIMTD. LIB, para la versión de depuración), asimismo a las otras bibliotecas.
  • Si genera test3.cpp mediante el /MD (o MDd, para una versión de depuración) opción del compilador, el sistema vinculará con MSVCRT. LIB (o MSVCRTD. LIB para la compilación de depuración) y MSVCIRT. LIB (o MSVCIRTD. LIB, para la versión de depuración) además a otras bibliotecas. En este caso, el programa será dependiente de MSVCRT. DLL (o MSVCRTD. DLL para la versión de depuración) y MSVCIRT. DLL (o MSVCIRTD. DLL para la versión de depuración).
Encabezados de determinan si se vinculará las bibliotecas estándar de C++, las bibliotecas iostream antigua o ninguna. Opciones del compilador (/ml/ml [d], [d] / / MT, /md/MD [d]) determinan qué versión de las bibliotecas multiproceso, con un único subproceso o multiproceso DLL está vinculado de forma predeterminada. Nota: Puede parecer que los encabezados sin la extensión. h. son encabezados estándar de C++ y que encabezados con la extensión. h encabezados en tiempo de ejecución de C o encabezados de iostream antigua. Esto no es cierto. Como se explicó anteriormente, los archivos de < useoldio.h > y < use_ansi.h > determinan las bibliotecas de con que la aplicación se vinculará. En realidad, hay dos archivos de encabezado, < useoldio.h > y < use_ansi.h >, que contienen #pragmas. El #pragmas forzar la antigua biblioteca iostream o la biblioteca estándar de C++ se vincula de forma predeterminada. El archivo de encabezado < useoldio.h > contiene instrucciones de #pragma, que fuerza la antigua biblioteca iostream vinculada en. Todos los encabezados de iostream antigua incluyen < useoldio.h >. Por lo tanto, si incluye cualquier encabezado iostream antigua en la aplicación, la antigua biblioteca iostream se vinculará de manera predeterminada. La tabla siguiente enumeran todos los archivos de encabezado que incluyen < useoldio.h >.

Encabezados de iostream antiguos

FSTREAM.HIOMANIP.H
IOS.HIOSTREAM.H
ISTREAM.HOSTREAM.H
STDIOSTR.HSTREAMB.H
STRSTREA.H
Nota < useoldio.h > sólo se aplica a Visual C++ .NET 2003 y versiones anteriores. Dado que la antigua biblioteca iostream se ha quitado de Visual C++ 2003 y versiones posteriores, también se ha quitado el encabezado < useoldio.h >.
El archivo de encabezado < use_ansi.h > contiene instrucciones de #pragma que forzar vinculada en la biblioteca estándar de C++. Todos los encabezados estándar de C++ incluyen < use_ansi.h >. Así que si incluye cualquier encabezado de C++ estándar en su aplicación, la biblioteca estándar de C++ se vinculará de manera predeterminada. La tabla siguiente enumeran todos los archivos de encabezado que incluyen < use_ansi.h >.

Encabezados estándar de C++

ALGORITMO DEBITSETCOMPLEJODEQUE
FSTREAMFUNCIONALIOMANIPIOS
IOSFWDIOSTREAMISTREAMITERADOR
LÍMITESLISTACONFIGURACIÓN REGIONALMAP
MEMORIANUMÉRICOMULTIHILADOCOLA
SETSSTREAMPILASTDEXCEPT
STREAMBUFCADENASTRSTREAMTYPEINFO
UTILIDADVALARRAYVECTORXIOSBASE
XLOCALEXLOCINFOXLOCMONXLOCNUM
XLOCTIMEXMEMORYXSTRINGXTREE
XUTILITYYMATH.H
No se pueden mezclar llamadas a la antigua biblioteca iostream y a la nueva biblioteca estándar de C++ en Visual C++ 4.2.
La opción de compilaciónVinculada con las bibliotecas
/ML (Visual C++ .NET 2003 y versiones anteriores)LIBC.LIB, LIBCP.LIB
/ MLd (Visual C++ .NET 2003 y versiones anteriores)LIBCD.LIB, LIBCPD.LIB
/MTLIBCMT.LIB, LIBCPMT.LIB
/MTdLIBCMTD.LIB, LIBCPMTD.LIB
/MDMSVCRT.LIB, MSVCPRT.LIB
/MDdMSVCRTD.LIB, MSVCPRTD.LIB

Tabla de resumen para archivos DLL de CRT utiliza

Biblioteca de importación vinculada conDLL que usa (Visual C++ 5.0 | 6.0)DLL que usa (Visual C++ .NET 2002 | Visual C++ .NET 2003)DLL que usa (Visual C++ 2005 | Visual C++ 2008
MSVCRT.LIBMSVCRT.DLLMSVCR7(0|1).DLLMSVCR(80|90).DLL
MSVCRTD.LIBMSVCRTD.DLLMSVCR7(0|1)D.DLLMSVCR(80|90)D.DLL
MSVCPRT.LIBMSVCP(5|6)0.DLLMSVCP7(0|1).DLLMSVCP(80|90).DLL
MSVCPRTD.LIBMSVCP(5|6)0D.DLLMSVCP7(0|1)D.DLLMSVCP(80|90)D.DLL
MSVCIRT.LIBMSVCIRT.DLL
MSVCIRTD.LIBMSVCIRTD.DLL

Referencias


Las bibliotecas de tiempo de ejecución de Chttp://msdn.microsoft.com/en-us/library/abx4dbyh.aspxpara obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Preguntas más frecuentes 154419 standard C++ Library