Description des bibliothèques de C et C++ par défaut qui est relié un programme lors de la création à l’aide de Visual C++


Résumé


Cet article décrit les bibliothèques par défaut LIBC [D]. LIB, LIBCMT [D]. LIB, LIBCI [D]. LIB, LIBCIMT [D]. LIB, LIBCP [D]. LIB, LIBCPMT [D]. LIB, MSVCRT [D]. LIB, MSVCIRT [D]. LIB et MSVCPRT [D]. LIB qui est relié un programme créés à l’aide de Visual C++.

Informations supplémentaires


Lorsque vous générez une version (debug ou release) de votre projet dans Visual C++, une des bibliothèques Runtime C de base (LIBC [D]. LIB, LIBCMT [D]. LIB et MSVCRT [D]. LIB) est lié par défaut, en fonction de l’option du compilateur que vous choisissez (mono-thread < ML [d] >, multithread < MT [d] >, ou une DLL multithread < MD [d] >). Une bibliothèque à partir de la bibliothèque C++ Standard ou un de l’ancienne bibliothèque iostream peut-être également être lié selon les en-têtes que vous utilisez dans votre code. Par exemple, prenons les cas suivants :

Cas 1 : Exemple de programme test1.cpp

// test1.cppvoid main(){}
  • Si vous générez des test1.cpp à l’aide de la /ML (ou /MLd, pour une version debug) l’option du compilateur, que votre programme va lier avec LIBC. LIB (ou LIBCD. LIB, pour la version debug), également dans d’autres bibliothèques.
    Remarque Le /ML et les options de compilateur /MLd bibliothèque pour les bibliothèques monothread statiques ont été supprimées dans Visual C++ 2005 et les versions ultérieures de Visual C++.
  • Si vous générez des test1.cpp à l’aide de la /MT (ou /MTd, pour une version debug) l’option du compilateur, que votre programme va lier avec LIBCMT. LIB (ou LIBCMTD. LIB, pour la version debug), également dans d’autres bibliothèques.
  • Si vous générez des test1.cpp à l’aide de la /MD (ou /mdd/MDd, pour une version debug) l’option du compilateur, que votre programme va lier avec MSVCRT. LIB (ou MSVCRTD. LIB, pour la version debug), également dans d’autres bibliothèques. Dans ce cas, votre programme sera dépendant de MSVCRT. DLL (ou MSVCRTD. DLL de version debug).

Cas 2 : Exemple de programme test2.cpp

   // test2.cpp   #include <iostream>   void main()   {   }
  • Si vous générez test2.cpp utilisant le /ML (ou /MLd, pour une version debug) l’option du compilateur, que votre programme va lier avec LIBC. LIB (ou LIBCD. LIB, pour la version debug) et LIBCP. LIB (ou LIBCPD. LIB, pour la version debug), également dans d’autres bibliothèques.
    Remarque Le /ML et les options de compilateur /MLd bibliothèque pour les bibliothèques monothread statiques ont été supprimées dans Visual C++ 2005 et les versions ultérieures de Visual C++.
  • Si vous générez test2.cpp utilisant le /MT (ou /MTd, pour une version debug) l’option du compilateur, que votre programme va lier avec LIBCMT. LIB (ou LIBCMTD. LIB, pour la version debug) et LIBCPMT. LIB (ou LIBCPMTD. LIB, pour la version debug), également dans d’autres bibliothèques.
  • Si vous générez test2.cpp utilisant le /MD (ou /mdd/MDd, pour une version debug) l’option du compilateur, que votre programme va lier avec MSVCRT. LIB (ou MSVCRTD. LIB, pour la version debug) et MSVCPRT. LIB (ou MSVCPRTD. LIB, pour la version debug), également dans d’autres bibliothèques. Pour Microsoft Visual C++ 2008, votre programme sera dépendant de MSVCR90. DLL et MSVCP90. DLL (ou MSVCR90D. DLL et MSVCP90D. DLL de version debug). Pour Microsoft Visual C++ 2005, votre programme sera dépendant de MSVCR80. DLL et MSVCP80. DLL (ou MSVCR80D. DLL et MSVCP80D. DLL de version debug). Dans Microsoft Visual C++ 2003, votre programme sera dépendant de MSVCR71. DLL et MSVCP71. DLL (ou MSVCR71D. DLL et MSVCP71D. DLL de version debug). Pour Microsoft Visual C++ 2002, votre programme sera dépendant de MSVCR70. DLL et MSVCP70. DLL (ou MSVCR70D. DLL et MSVCP70D. DLL de version debug). Pour Microsoft Visual C++ 6.0, votre programme sera dépendant de MSVCRT. DLL et le fichier MSVCP60. DLL (ou MSVCRTD. DLL et MSVCP60D. DLL de version debug). Pour Microsoft Visual C++ 5.0, votre programme sera dépendant de MSVCRT. DLL et MSVCP50. DLL (ou MSVCRTD. DLL et MSVCP50D. DLL de version debug). Pour Microsoft Visual C++ 4.2, votre programme sera dépendant de MSVCRT. DLL (ou MSVCRTD. DLL de version debug) et MSVCPRT. LIB (ou MSVCPRTD. LIB, pour la version debug).

Cas 3 : Exemple de programme test3.cpp

Remarque Les fichiers d’en-tête de flux qui ont l’extension .h (inclure < useoldio.h >) ont été désapprouvées dans Visual C++ 2002 et ont été supprimés dans Visual C++ 2005 et Visual C++ 2003. Par conséquent, l’exemple suivant ne fonctionnera pas dans une version de Visual C++ de Visual C++ 2002 au plus tard.
// test3.cpp#include <iostream.h>void main(){}
  • Si vous générez des test3.cpp à l’aide de la /ML (ou /MLd, pour une version debug) l’option du compilateur, que votre programme va lier avec LIBC. LIB (ou LIBCD. LIB, pour la version debug) et LIBCI. LIB (ou LIBCID. LIB, pour la version debug), également dans d’autres bibliothèques.
    Remarque Le /ML et les options de compilateur /MLd bibliothèque pour les bibliothèques monothread statiques ont été supprimées dans Visual C++ 2005 et les versions ultérieures de Visual C++.
  • Si vous générez des test3.cpp à l’aide de la /MT (ou /MTd, pour une version debug) l’option du compilateur, que votre programme va lier avec LIBCMT. LIB (ou LIBCMTD. LIB, pour la version debug) et LIBCIMT. LIB (ou LIBCIMTD. LIB, pour la version debug), également dans d’autres bibliothèques.
  • Si vous générez des test3.cpp à l’aide de la /MD (ou /mdd/MDd, pour une version debug) l’option du compilateur, que votre programme va lier avec MSVCRT. LIB (ou MSVCRTD. LIB, pour la version debug) et MSVCIRT. LIB (ou MSVCIRTD. LIB, pour la version debug) en outre dans d’autres bibliothèques. Dans ce cas, votre programme sera dépendant de MSVCRT. DLL (ou MSVCRTD. DLL de version debug) et MSVCIRT. DLL (ou MSVCIRTD. DLL de version debug).
En-têtes de déterminent si les bibliothèques C++ Standard, les anciennes bibliothèques iostream ou aucune des deux seront lié. Options de compilateur ([d] de /ML, /MT [d], [d] de /MD) déterminent les version des bibliothèques multithreads, mono-thread ou multithread DLL doit être lié par défaut. Remarque Il peut sembler que les en-têtes sans l’extension .h en-têtes Standard C++ et en-têtes avec l’extension .h Runtime C les en-têtes ou les anciens en-têtes. Cela n’est pas vrai. Comme expliqué ci-dessous, les fichiers < useoldio.h > et < use_ansi.h > déterminent les bibliothèques que lie avec votre application. En fait, il y a deux fichiers d’en-tête, < useoldio.h > et < use_ansi.h >, qui contiennent des #pragmas. Le #pragmas force l’ancienne bibliothèque iostream ou la bibliothèque C++ Standard à être liée par défaut. Le fichier d’en-tête < useoldio.h > contient les instructions #pragma qui force l’ancienne bibliothèque iostream liée dans. Tous les anciens en-têtes incluent < useoldio.h >. Par conséquent, si vous incluez un en-tête iostream ancien dans votre application, l’ancienne bibliothèque iostream sera liée par défaut. Le tableau suivant répertorie tous les fichiers d’en-tête qui contiennent < useoldio.h >.

Anciens en-têtes

FSTREAM.HIOMANIP.H
IOS.HIOSTREAM.H
ISTREAM.HOSTREAM.H
STDIOSTR.HSTREAMB.H
STRSTREA.H
Remarque < useoldio.h > s’applique uniquement à Visual C++ .NET 2003 et les versions antérieures. Étant donné que l’ancienne bibliothèque iostream a été supprimé de Visual C++ 2003 et versions ultérieures, l’en-tête < useoldio.h > a également été supprimé.
Le fichier d’en-tête < use_ansi.h > contient les instructions #pragma qui forcent la bibliothèque C++ Standard liée dans. Tous les en-têtes de C++ Standard incluent < use_ansi.h >. Par conséquent, si vous incluez un en-tête C++ Standard dans votre application, la bibliothèque C++ Standard est liée par défaut. Le tableau suivant répertorie tous les fichiers d’en-tête qui contiennent < use_ansi.h >.

En-têtes de C++ standard

ALGORITHMEBITSETCOMPLEXEDEQUE
FSTREAMFONCTIONNELIOMANIPE/S
IOSFWDIOSTREAMISTREAMITÉRATEUR
LIMITESLISTEPARAMÈTRES RÉGIONAUXCARTE
MÉMOIRENUMÉRIQUEOSTREAMFILE D’ATTENTE
ENSEMBLESSTREAMPILESTDEXCEPT
STREAMBUFCHAÎNESTRSTREAMTYPEINFO
UTILITAIREVALARRAYVECTEURXIOSBASE
XLOCALEXLOCINFOXLOCMONXLOCNUM
XLOCTIMEXMEMORYXSTRINGXTREE
XUTILITYYMATH.H
Vous ne pouvez pas mélanger des appels à l’ancienne bibliothèque iostream et à la nouvelle bibliothèque C++ Standard dans Visual C++ 4.2.
L’option de compilationBibliothèques liées avec
/ML (VC ++ .NET 2003 et versions antérieures)LIBC.LIB, LIBCP.LIB
/MLD (VC ++ .NET 2003 et versions antérieures)LIBCD.LIB, LIBCPD.LIB
/MTLIBCMT.LIB, LIBCPMT.LIB
/MTdLIBCMTD.LIB, LIBCPMTD.LIB
/MDMSVCRT.LIB, MSVCPRT.LIB
/MDdMSVCRTD.LIB, MSVCPRTD.LIB

Tableau récapitulatif de la DLL CRT utilisées

Bibliothèque d’importation liée avecDLL utilisés (Visual C++ 5.0 | 6.0)DLL utilisés (Visual C++ .NET 2002 | Visual C++ .NET 2003)DLL utilisés (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

Références


C Run-Time Librarieshttp://msdn.microsoft.com/en-us/library/abx4dbyh.aspxPour plus d’informations, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
Bibliothèque C++ standard 154419 Forum aux questions