0

可能重复:
为什么运行时库是编译器选项而不是链接器选项?

我不明白为什么我必须在编译阶段选择 RTL 类型?

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

当我尝试将 A.lib 和 B.lib 链接到我的 C.exe 时,我会收到链接器错误。

但是在编译阶段(创建 A.lib 和 B.lib)没有任何理由从 c 或 c++ 运行时解析符号。

4

1 回答 1

1

当您使用 构建时/MD,编译器使用一组不同的预定义宏,然后在您构建时使用/MT. 请参阅文档并注意_MT,_DLL等宏。

在编译阶段(创建 A.lib 和 B.lib)没有任何理由从 c 或 c++ 运行时解析符号。

这是真的,但是如果你包含任何系统头文件,你的预处理源实际上是不同的,具体取决于你使用的/MD,/MT等标志,在编译阶段非常重要。

于 2012-03-17T03:10:40.790 回答