C++ 为什么/MD是编译器';谁的选择?非链接器';s

C++ 为什么/MD是编译器';谁的选择?非链接器';s,c++,compiler-construction,linker,crt,C++,Compiler Construction,Linker,Crt,可能重复: 我不清楚为什么我必须选择RTL类型 在编译阶段 例如,我使用选项/MD创建了一个静态库A.lib。 然后,我用选项/MT创建了第二个静态库B.lib 当我尝试将A.lib和B.lib链接到我的C.exe时 我将获得链接器错误 但在编译阶段(创建A.lib和B.lib) 没有任何理由来解决C或C++运行时的符号。< P>当你用 MD 编译时,编译器使用一组不同的预定义宏,然后用“代码>/Mt”编译。请参阅并注意\u MT,\u DLL等宏 编译阶段(创建A.LIB和B.lib),没有

可能重复:

我不清楚为什么我必须选择RTL类型 在编译阶段

例如,我使用选项/MD创建了一个静态库A.lib。 然后,我用选项/MT创建了第二个静态库B.lib

当我尝试将A.lib和B.lib链接到我的C.exe时 我将获得链接器错误

但在编译阶段(创建A.lib和B.lib)
没有任何理由来解决C或C++运行时的符号。

< P>当你用 MD 编译时,编译器使用一组不同的预定义宏,然后用“代码>/Mt”编译。请参阅并注意
\u MT
\u DLL
等宏

<>编译阶段(创建A.LIB和B.lib),没有任何理由来解决C或C++运行时的符号。
这是真的,但如果您包含任何系统头,那么预处理的源代码实际上是不同的,这取决于您使用的
/MD
/MT
等标志,这在编译阶段非常重要。

相关。CRT和它不太兼容。最大的问题是全局变量,比如errno。重新定义为有效的/MD函数。