我的程序必定会使用C/C++的系统函数,我们可以使用静态库的方式(/MT)使用这些函数,也可以使用动态库的方式(/MD)使用这些函数。MT,链接时需要LIBCMT.lib;MD,链接时需要MSVCRT.lib ,运行时需要 MSVCR80.DLL。
各种 C 运行时库的区别
( 1 )静态链接的单线程库
静态链接的单线程库只能用于单线程的应用程序, C 运行时库的目标代码最终被编译在应用程序的二进制文件中。通过 /ML 编译选项可以设置 Visual C++ 使用静态链接的单线程库。
( 2 )静态链接的多线程库
静态链接的多线程库的目标代码也最终被编译在应用程序的二进制文件中,但是它可以在多线程程序中使用。通过 /MT 编译选项可以设置 Visual C++ 使用静态链接的多线程库。
( 3 )动态链接的运行时库
动态链接的运行时库将所有的 C 库函数保存在一个单独的动态链接库 MSVCRTxx.DLL 中, MSVCRTxx.DLL 处理了多线程问题。使用 /MD 编译选项可以设置 Visual C++ 使用动态
多线程(/MT) 多线程调试(/MTd) 多线程 DLL (/MD) 多线程调试 DLL (/MDd)
C 运行时库 |
库文件 |
Single thread(static link) ML |
libc.lib |
Debug single thread(static link) MLd |
libcd.lib |
MultiThread(static link) MT |
libcmt.lib |
Debug multiThread(static link) MTd |
libcmtd.lib |
MultiThread(dynamic link) MD |
msvert.lib |
Debug multiThread(dynamic link) MDd |
msvertd.lib |
VS2005配置运行时库
如果出错#error : Please use the /MD switch for _AFXDLL builds ,请先配置常规。