INFO: What Are the C/C++ Libraries My Program Would Link With?Last reviewed: October 7, 1997Article ID: Q154753 |
The information in this article applies to:
SUMMARYThis article describes the default libraries LIBC[D].LIB, LIBCMT[D].LIB, LIBCI[D].LIB, LIBCIMT[D].LIB, LIBCP[D].LIB, LIBCPMT[D].LIB, MSVCRT[D].LIB, MSVCIRT[D].LIB, and MSVCPRT[D].LIB that a program will link with when built using Visual C++.
MORE INFORMATIONWhen you build a release (or debug) version of your project in Visual C++, one of the basic C Runtime libraries (LIBC[D].LIB, LIBCMT[D].LIB, and MSVCRT[D].LIB) is linked by default, depending on the compiler option you choose (single-threaded <ML[d]>, multithreaded <MT[d]>, or multithreaded DLL<MD[d]>). A library from the Standard C++ Library or one from the old iostream library may also be linked depending on the headers you use in your code. For example, consider the following cases:
Case 1: Sample program test1.cpp
// test1.cpp void main() { }
Case 2: Sample program test2.cpp
// test2.cpp #include <iostream> void main() { }
Case 3: Sample program test3.cpp
// test.cpp #include <iostream.h> void main() { } Headers determine whether the Standard C++ libraries, old iostream libraries, or neither will be linked. Compiler options (/ML[d], /MT[d], /MD[d]) determine which version of the libraries single-threaded, multithreaded, or multithreaded DLL is to be linked by default. NOTE: It may seem that headers without the ".h" extension are Standard C++ headers and that headers with the ".h" extension are C Runtime headers or old iostream headers. This is not true. As explained below, the files <useoldio.h> and <use_ansi.h> determine the libraries your application will link with. Actually, there are two header files, <useoldio.h> and <use_ansi.h>, that contain #pragmas. The #pragmas force either the old iostream library or the Standard C++ library to be linked in by default. The header file <useoldio.h> contains #pragma statements, which force the old iostream library to be linked in. All old iostream headers include <useoldio.h>. So, if you include any old iostream header in your application, the old iostream library will be linked by default. The following table lists all the header files that include <useoldio.h>.
Old iostream Headers -------------------- FSTREAM.H IOMANIP.H IOS.H IOSTREAM.H ISTREAM.H OSTREAM.H STDIOSTR.H STREAMB.H STRSTREA.HThe header file <use_ansi.h> contains #pragma statements that force the Standard C++ Library to be linked in. All Standard C++ Headers include <use_ansi.h>. So if you include any Standard C++ header in your application, the Standard C++ library will be linked by default. The following table lists all the header files that include <use_ansi.h>.
Standard C++ Headers ------------------------------------------------------ ALGORITHM BITSET COMPLEX DEQUE FSTREAM FUNCTIONAL IOMANIP IOS IOSFWD IOSTREAM ISTREAM ITERATOR LIMITS LIST LOCALE MAP MEMORY NUMERIC OSTREAM QUEUE SET SSTREAM STACK STDEXCEPT STREAMBUF STRING STRSTREAM TYPEINFO UTILITY VALARRAY VECTOR XIOSBASE XLOCALE XLOCINFO XLOCMON XLOCNUM XLOCTIME XMEMORY XSTRING XTREE XUTILITY YMATH.HYou cannot mix calls to the old iostream library and the new Standard C++ Library in Visual C++ 4.2.
Summary Table | Compile Old New IOStream Libraries | | Option IOStream or STL Linked With | |================================================================| | /ML No No LIBC.LIB | |----------------------------------------------------------------| | /MLd No No LIBCD.LIB | |----------------------------------------------------------------| | /MT No No LIBCMT.LIB | |----------------------------------------------------------------| | /MTd No No LIBCMTD.LIB | |----------------------------------------------------------------| | /MD No No MSVCRT.LIB | |----------------------------------------------------------------| | /MDd No No MSVCRTD.LIB | |----------------------------------------------------------------| | /ML No Yes LIBC.LIB, LIBCP.LIB | |----------------------------------------------------------------| | /MLd No Yes LIBCD.LIB, LIBCPD.LIB | |----------------------------------------------------------------| | /MT No Yes LIBCMT.LIB, LIBCPMT.LIB | |----------------------------------------------------------------| | /MTd No Yes LIBCMTD.LIB, LIBCPMTD.LIB | |----------------------------------------------------------------| | /MD No Yes MSVCRT.LIB, MSVCPRT.LIB | |----------------------------------------------------------------| | /MDd No Yes MSVCRTD.LIB, MSVCPRTD.LIB | |----------------------------------------------------------------| | /ML Yes No LIBC.LIB, LIBCI.LIB | |----------------------------------------------------------------| | /MLd Yes No LIBCD.LIB, LIBCID.LIB | |----------------------------------------------------------------| | /MT Yes No LIBCMT.LIB, LIBCIMT.LIB | |----------------------------------------------------------------| | /MTd Yes No LIBCMTD.LIB, LIBCIMTD.LIB | |----------------------------------------------------------------| | /MD Yes No MSVCRT.LIB, MSVCIRT.LIB | |----------------------------------------------------------------| | /MDd Yes No MSVCRTD.LIB, MSVCIRTD.LIB |
Summary Table for CRT DLLs Used | Import Library DLLs Used DLLs Used | | Linked With (VC 5.0) (VC 4.2) | |=================================================| | MSVCRT.LIB MSVCRT.DLL MSVCRT.DLL | |-------------------------------------------------| | MSVCRTD.LIB MSVCRTD.DLL MSVCRTD.DLL | |-------------------------------------------------| | MSVCPRT.LIB MSVCP50.DLL | |-------------------------------------------------| | MSVCPRTD.LIB MSVCP50D.DLL | |-------------------------------------------------| | MSVCIRT.LIB MSVCIRT.DLL MSVCIRT.DLL | |-------------------------------------------------| | MSVCIRTD.LIB MSVCIRTD.DLL MSVCIRTD.DLL |
REFERENCESFor additional information, please see the following article(s) in the Microsoft Knowledge Base:
ARTICLE-ID: Q154419 TITLE : Standard C++ Library Frequently Asked QuestionsFor latest technical discussions concerning the Standard C++ Library see Microsoft Frequently Asked Questions in the Microsoft Technical Support Web site at http://support.microsoft.com/support/visualc/default.asp. See the Standard C++ Library topic in Visual C++ Books Online, New Visual C++ Version 4.2 Features, for related topics.
|
Additional query words: MSVCRT.DLL MSVCIRT.DLL MSVCPRT.LIB LIBCI.LIB
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |