示例程序 test1.cpp 案例 1:
// test1.cpp
void main()
{
}
• | 如果生成使用 / ML test1.cpp (或 ) 编译器选项, 程序将链接到其他库中除与 LIBC.LIB (或 LIBCD.LIB, 有关调试版本), MLd , 为调试生成 /。 |
• | 如果生成使用 / MT test1.cpp (或 ) 编译器选项, 程序将链接到其他库中除与 LIBCMT.LIB (或 LIBCMTD.LIB, 有关调试版本), MTd , 为调试生成 /。 |
• | 如果生成 test1.cpp 使用 / MD (或 ) 编译器选项, 程序将链接到其他库中除与 MSVCRT.LIB (或 MSVCRTD.LIB, 有关调试版本), MDd , 为调试生成 /。 在这种情况下, 程序将是依赖 MSVCRT.DLL (或 MSVCRTD.DLL 有关调试版本)。 例二: 示例程序 test2.cpp
示例程序 test3.cpp 情况 3:具有 h 扩展名 注意 : 流头文件有 Visual C++ 2002年抨击并在 VisualC++2005 和 Visual C++ 2003 中删除了 (包括 < useoldio.h >)。 因此, 以下示例在晚于 Visual C++ 2002 版本的 VisualC++ 中无法工作。
确定是否将链接标准 C++ 库、 旧 iostream 库, 或没有标题。 确定是否为默认链接多线程 DLL 版本的单线程、 多线程, 库或编译器选项 ( / ML [ d ] , [ d ] / MT , / MD [ d ] )。 注意 它似乎头没有 h 扩展名是常用 C++ 头并且页眉与 h 扩展名是 C 运行头或旧 iostream 头。 不是如此。 详见下面, < useoldio.h > 文件和 < use_ansi.h > 确定库应用程序将链接。 实际, 还有两头文件, 包含 #pragmas 和 <use_ansi.h>, <useoldio.h>。 #pragmas 强制或者旧 iostream 库或标准 C++ 库到中链接默认。 头文件 <useoldio.h> 包含 # pragma 语句, 强制被链接到旧 iostream 库。 所有旧 iostream 头包括 <useoldio.h>。 因此, 如果, 应用程序中包含任何旧 iostream 头旧 iostream 库将链接默认。 下表列出所有头文件包含 <useoldio.h>。
头文件 <use_ansi.h> 包含 # pragma 语句, 强制常用 C++ 库中被链接到。 所有常用 C++ 头包括 <use_ansi.h>。 因此如果, 应用程序中包含任何常用 C++ 头标准 C++ 库将链接默认。 下表列出所有头文件包含 <use_ansi.h>。
不能混合对旧 iostream 库和新标准 C++ 库 Visual C++ 4.2 中调用。
对于使用 CRT DLL 摘要表 |
• | 如果生成使用 / ML test2.cpp LIBCP.LIB (或 LIBCPD.LIB, 有关调试版本), 和其他库或 ) 编译器选项, 将程序链接与 LIBC.LIB (或 LIBCD.LIB, 有关调试版本) MLd , 为调试生成 (/。 |
• | 如果生成使用 / MT test2.cpp LIBCPMT.LIB (或 LIBCPMTD.LIB, 有关调试版本), 和其他库或 ) 编译器选项, 将程序链接与 LIBCMT.LIB (或 LIBCMTD.LIB, 有关调试版本) MTd , 为调试生成 (/。 |
• | 如果生成使用 test2.cpp MSVCPRT.LIB (或 MSVCPRTD.LIB, 有关调试版本), 和其他库 (or /MDd, for a debug build) 编译器选项, / MD 与 MSVCRT.LIB (或 MSVCRTD.LIB, 有关调试版本) 将程序链接。 对于 Microsoft Visual C++ 2005, 程序将会依赖 MSVCRT.DLL 和 MSVCP80.DLL (或 MSVCRTD.DLL 和 MSVCP80D.DLL 有关调试版本)。 对于 Microsoft Visual C++ 2003, 程序将会依赖 MSVCRT.DLL 和 MSVCP71.DLL (或 MSVCRTD.DLL 和 MSVCP71D.DLL 有关调试版本)。 对于 Microsoft Visual C++ 2002, 程序将会依赖 MSVCRT.DLL 和 MSVCP70.DLL (或 MSVCRTD.DLL 和 MSVCP70D.DLL 有关调试版本)。 对于 MicrosoftVisualC++6.0, 程序将会依赖 MSVCRT.DLL 和 MSVCP60.DLL (或 MSVCRTD.DLL 和 MSVCP60D.DLL 有关调试版本)。 对于 Microsoft Visual C++5.0, 程序将会依赖 MSVCRT.DLL 和 MSVCP50.DLL (或 MSVCRTD.DLL 和 MSVCP50D.DLL 有关调试版本)。 对于 Microsoft Visual C++ 4.2, 程序将会依赖 MSVCRT.DLL (或为调试生成 MSVCRTD.DLL) MSVCPRT.LIB (或 MSVCPRTD.LIB, 有关调试版本)。 |