VC代码生成里面的/MT /MTd /MD /MDd的意思。
意思上已经很明白了。但是往往很多人弄不清楚到底怎么选择。
/MT是 "multithread, static version ” 意思是多线程静态的版本。
定义了它后,编译器把LIBCMT.lib 安置到OBJ文件中,让链接器使用LIBCMT.lib 处理外部符号。
/MD是 "multithread- and DLL-specific version” ,意思是多线程DLL版本,定义了它后,编译器把
MSVCRT.lib 安置到OBJ文件中,它连接到DLL的方式是静态链接,实际上工作的库是MSVCR**.DLL。
即:
静态运行时库:LIBCMT.lib
动态运行时库:MSVCRT.lib + MSVCR**.DLL
说白了,就是是否把对应的库打包到exe中。