Mô tả các mặc định C và C++ thư viện chương trình sẽ liên kết với khi được xây dựng bằng cách sử dụng Visual C++


Tóm tắt


Bài viết này mô tả các thư viện mặc định LIBC [D]. LIB LIBCMT [D]. LIB LIBCI [D]. LIB LIBCIMT [D]. LIB LIBCP [D]. LIB LIBCPMT [D]. LIB MSVCRT [D]. LIB MSVCIRT [D]. LIB và MSVCPRT [D]. LIB chương trình sẽ liên kết với khi được xây dựng bằng Visual C++.

Thông tin Bổ sung


Khi bạn tạo một phiên bản phát hành (hoặc gỡ lỗi) của dự án trong Visual C++, một trong các thư viện C Runtime cơ bản (LIBC [D]. LIB LIBCMT [D]. LIB và MSVCRT [D]. LIB) được liên kết theo mặc định, tuỳ thuộc vào tuỳ chọn trình bạn chọn (một luồng ML [d] < >, multithreaded < MT [d] >, hoặc multithreaded DLL < MD [d] >). Một thư viện thư viện chuẩn C++ hoặc từ thư viện iostream cũ cũng có thể được liên kết tuỳ thuộc vào các tiêu đề mà bạn sử dụng mã. Ví dụ: Hãy xem xét các trường hợp sau:

Trường hợp 1: Mẫu chương trình test1.cpp

// test1.cppvoid main(){}
  • Nếu bạn xây dựng test1.cpp sử dụng /ML (hoặc /MLd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với LIBC. LIB (hoặc LIBCD. LIB, để gỡ lỗi tạo), in thư viện khác.
    Lưu ý/ML/MLd tùy chọn biên soạn thư viện tĩnh một luồng thư viện đã bị xoá trong Visual C++ 2005 và các phiên bản Visual C++.
  • Nếu bạn xây dựng test1.cpp sử dụng /MT (hoặc /MTd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với LIBCMT. LIB (hoặc LIBCMTD. LIB, để gỡ lỗi tạo), in thư viện khác.
  • Nếu bạn xây dựng test1.cpp sử dụng /MD (hoặc /MDd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với MSVCRT. LIB (hoặc MSVCRTD. LIB, để gỡ lỗi tạo), in thư viện khác. Trong trường hợp này, chương trình của bạn sẽ phụ thuộc vào MSVCRT. DLL (hoặc MSVCRTD. DLL để gỡ lỗi tạo).

Trường hợp 2: Mẫu chương trình test2.cpp

   // test2.cpp   #include <iostream>   void main()   {   }
  • Nếu bạn xây dựng test2.cpp sử dụng /ML (hoặc /MLd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với LIBC. LIB (hoặc LIBCD. LIB để gỡ lỗi tạo) và LIBCP. LIB (hoặc LIBCPD. LIB, để gỡ lỗi tạo), in thư viện khác.
    Lưu ý/ML/MLd tùy chọn biên soạn thư viện tĩnh một luồng thư viện đã bị xoá trong Visual C++ 2005 và các phiên bản Visual C++.
  • Nếu bạn xây dựng test2.cpp sử dụng /MT (hoặc /MTd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với LIBCMT. LIB (hoặc LIBCMTD. LIB để gỡ lỗi tạo) và LIBCPMT. LIB (hoặc LIBCPMTD. LIB, để gỡ lỗi tạo), in thư viện khác.
  • Nếu bạn xây dựng test2.cpp sử dụng /MD (hoặc /MDd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với MSVCRT. LIB (hoặc MSVCRTD. LIB để gỡ lỗi tạo) và MSVCPRT. LIB (hoặc MSVCPRTD. LIB, để gỡ lỗi tạo), in thư viện khác. Microsoft Visual C++ 2008, chương trình của bạn sẽ phụ thuộc vào MSVCR90. DLL và MSVCP90. DLL (hoặc MSVCR90D. DLL và MSVCP90D. DLL để gỡ lỗi tạo). Microsoft Visual C++ 2005, chương trình của bạn sẽ phụ thuộc vào MSVCR80. DLL và MSVCP80. DLL (hoặc MSVCR80D. DLL và MSVCP80D. DLL để gỡ lỗi tạo). Microsoft Visual C++ 2003, chương trình của bạn sẽ phụ thuộc vào MSVCR71. DLL và MSVCP71. DLL (hoặc MSVCR71D. DLL và MSVCP71D. DLL để gỡ lỗi tạo). Microsoft Visual C++ 2002, chương trình của bạn sẽ phụ thuộc vào MSVCR70. DLL và MSVCP70. DLL (hoặc MSVCR70D. DLL và MSVCP70D. DLL để gỡ lỗi tạo). Microsoft Visual C++ 6.0, chương trình của bạn sẽ phụ thuộc vào MSVCRT. DLL và MSVCP60. DLL (hoặc MSVCRTD. DLL và MSVCP60D. DLL để gỡ lỗi tạo). Microsoft Visual C++ 5.0, chương trình của bạn sẽ phụ thuộc vào MSVCRT. DLL và MSVCP50. DLL (hoặc MSVCRTD. DLL và MSVCP50D. DLL để gỡ lỗi tạo). Microsoft Visual C++ 4.2, chương trình của bạn sẽ phụ thuộc vào MSVCRT. DLL (hoặc MSVCRTD. DLL để gỡ lỗi tạo) và MSVCPRT. LIB (hoặc MSVCPRTD. LIB, để gỡ lỗi tạo).

Trường hợp 3: Mẫu chương trình test3.cpp

Lưu ý Dòng tiêu đề tệp có phần mở rộng .h (bao gồm < useoldio.h >) đã bị phản đối trong Visual C++ 2002 và đã được loại bỏ trong Visual C++ 2005 và Visual C++ 2003. Do đó, các mẫu sau sẽ không hoạt động trong phiên bản của Visual C++ sau Visual C++ 2002.
// test3.cpp#include <iostream.h>void main(){}
  • Nếu bạn xây dựng test3.cpp sử dụng /ML (hoặc /MLd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với LIBC. LIB (hoặc LIBCD. LIB để gỡ lỗi tạo) và LIBCI. LIB (hoặc LIBCID. LIB, để gỡ lỗi tạo), in thư viện khác.
    Lưu ý/ML/MLd tùy chọn biên soạn thư viện tĩnh một luồng thư viện đã bị xoá trong Visual C++ 2005 và các phiên bản Visual C++.
  • Nếu bạn xây dựng test3.cpp sử dụng /MT (hoặc /MTd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với LIBCMT. LIB (hoặc LIBCMTD. LIB để gỡ lỗi tạo) và LIBCIMT. LIB (hoặc LIBCIMTD. LIB, để gỡ lỗi tạo), in thư viện khác.
  • Nếu bạn xây dựng test3.cpp sử dụng /MD (hoặc /MDd, để tạo gỡ lỗi) tùy chọn biên soạn, chương trình của bạn sẽ liên kết với MSVCRT. LIB (hoặc MSVCRTD. LIB để gỡ lỗi tạo) và MSVCIRT. LIB (hoặc MSVCIRTD. LIB, để gỡ lỗi tạo) in thư viện khác. Trong trường hợp này, chương trình của bạn sẽ phụ thuộc vào MSVCRT. DLL (hoặc MSVCRTD. DLL để gỡ lỗi tạo) và MSVCIRT. DLL (hoặc MSVCIRTD. DLL để gỡ lỗi tạo).
Tiêu đề xác định xem thư viện chuẩn C++, thư viện iostream cũ, hay không sẽ được liên kết. Tùy chọn biên dịch (/ML [d], /MT [d], /MD [d]) xác định những phiên bản thư viện một luồng, multithreaded multithreaded DLL là được kết nối mặc định. Lưu ý Nó có vẻ như các tiêu đề mà không có phần mở rộng .h có tiêu đề chuẩn C++ và tiêu đề có phần mở rộng .h có tiêu đề C chạy hoặc cũ iostream tiêu đề. Điều này không đúng. Như trình bày dưới đây, các tệp < useoldio.h > và < use_ansi.h > xác định thư viện ứng dụng của bạn sẽ liên kết với. Thực tế, có hai tập tin tiêu đề, < useoldio.h > < use_ansi.h >, và chứa #pragmas. #pragmas buộc thư viện iostream cũ hoặc thư viện chuẩn C++ được liên kết trong theo mặc định. Các tập tin tiêu đề < useoldio.h > chứa #pragma báo cáo, buộc thư viện iostream cũ được liên kết trong. Bao gồm tất cả cũ iostream tiêu < useoldio.h >. Vì vậy, nếu bạn có bất kỳ tiêu đề iostream cũ trong ứng dụng của bạn, thư viện iostream cũ sẽ được liên kết theo mặc định. Bảng sau liệt kê tất cả các tập tin tiêu đề bao gồm < useoldio.h >.

Cũ iostream tiêu đề

FSTREAM.HIOMANIP.H
IOS.HIOSTREAM.H
ISTREAM.HOSTREAM.H
STDIOSTR.HSTREAMB.H
STRSTREA.H
Chú ý < useoldio.h > chỉ áp dụng cho Visual C++ .NET 2003 và các phiên bản. Vì các thư viện iostream cũ đã bị xoá khỏi Visual C++ 2003 và các phiên bản, tiêu đề < useoldio.h > cũng đã bị xoá.
Các tập tin tiêu đề < use_ansi.h > chứa #pragma báo cáo buộc thư viện chuẩn C++ được kết nối trong. Bao gồm tất cả chuẩn C++ tiêu < use_ansi.h >. Vì vậy nếu bạn có bất kỳ tiêu đề chuẩn C++ trong ứng dụng của bạn, thư viện chuẩn C++ sẽ được liên kết theo mặc định. Bảng sau liệt kê tất cả các tập tin tiêu đề bao gồm < use_ansi.h >.

Tiêu đề chuẩn C++

THUẬT TOÁNBITSETPHỨC TẠPDEQUE
FSTREAMCHỨC NĂNGIOMANIPIOS
IOSFWDIOSTREAMISTREAMITERATOR
GIỚI HẠNDANH SÁCHNGÔN NGỮBẢN ĐỒ
BỘ NHỚSỐOSTREAMHÀNG ĐỢI
THIẾT LẬPSSTREAMXẾP CHỒNGSTDEXCEPT
STREAMBUFCHUỖISTRSTREAMTYPEINFO
TIỆN ÍCHVALARRAYVÉC-TƠXIOSBASE
XLOCALEXLOCINFOXLOCMONXLOCNUM
XLOCTIMEXMEMORYXSTRINGXTREE
XUTILITYYMATH.H
Bạn không thể kết hợp cuộc gọi đến thư viện iostream cũ và thư viện C++ chuẩn mới trong Visual C++ 4.2.
Tùy chọn biên dịchThư viện liên kết với
/ML (VC ++ .NET 2003 và trước đó)LIBC.LIB, LIBCP.LIB
/ MLd (VC ++ .NET 2003 và trước đó)LIBCD.LIB, LIBCPD.LIB
/MTLIBCMT.LIB, LIBCPMT.LIB
/MTdLIBCMTD.LIB, LIBCPMTD.LIB
/MDMSVCRT.LIB, MSVCPRT.LIB
/MDdMSVCRTD.LIB, MSVCPRTD.LIB

Tổng quan về để sử dụng CRT dll

Nhập thư viện liên kết vớiDLL sử dụng (Visual C++ 5.0 | 6.0)DLL sử dụng (Visual C++ .NET 2002 | Visual C++ .NET 2003)DLL sử dụng (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

Tham khảo


Thư viện thời gian chạy Chttp://msdn.microsoft.com/en-us/library/abx4dbyh.aspxđể biết thêm thông tin, bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
Thư viện C++ chuẩn 154419 câu hỏi thường gặp