可能重复:
为什么运行时库是编译器选项而不是链接器选项?
我不明白为什么我必须在编译阶段选择 RTL 类型?
例如,我创建了一个带有选项 /MD 的静态库 A.lib。然后我用选项 /MT 创建了第二个静态库 B.lib。
当我尝试将 A.lib 和 B.lib 链接到我的 C.exe 时,我会收到链接器错误。
但是在编译阶段(创建 A.lib 和 B.lib)没有任何理由从 c 或 c++ 运行时解析符号。
可能重复:
为什么运行时库是编译器选项而不是链接器选项?
我不明白为什么我必须在编译阶段选择 RTL 类型?
例如,我创建了一个带有选项 /MD 的静态库 A.lib。然后我用选项 /MT 创建了第二个静态库 B.lib。
当我尝试将 A.lib 和 B.lib 链接到我的 C.exe 时,我会收到链接器错误。
但是在编译阶段(创建 A.lib 和 B.lib)没有任何理由从 c 或 c++ 运行时解析符号。
当您使用 构建时/MD
,编译器使用一组不同的预定义宏,然后在您构建时使用/MT
. 请参阅文档并注意_MT
,_DLL
等宏。
在编译阶段(创建 A.lib 和 B.lib)没有任何理由从 c 或 c++ 运行时解析符号。
这是真的,但是如果你包含任何系统头文件,你的预处理源实际上是不同的,具体取决于你使用的/MD
,/MT
等标志,这在编译阶段非常重要。