MT与MD的区别
- /MT:是multithread-static version,是多线程静态版本的意思,项目会使用运行时库的多线程静态版本,编译器会将LIBCMT.lib放入.obj文件中,以便链接器使用LIBCMT.lib解析外部符号;
- /MTd:是定义了_DEBUG和/MT,是/MT类型的debug版本;
- /MD:是multithread-dll version,是多线程dll版本的意思,项目会使用运行时库的多线程动态dll版本,编译器会将MSVCRT.lib放入.obj文件中,在编译项目时,它会静态链接MSVCRT.lib,但在实际运行过程中,它会链接使用MSVCR90.dll;
- MDd:是定义了_DEBUG和/MD,是/MD类型的debug版本;
用/MT类型生成的,则它所调用的运行时库为LIBCMT.lib
用/MD类型的,工程在链接时会调用MSVCRT.lib和MSVCR90.dll