2012-03-15 31 views
0

可能重复:
Why is runtime library a compiler option rather than a linker option?为什么/ MD是编译器的选择?不是链接器的?

我不清楚地了解为什么我在编译阶段选择RTL 的类型?

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

当我尝试链接A.lib和B.lib到我的C.exe 我会得到链接错误。

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

+2

相关。 http://stackoverflow.com/questions/521972/why-is-runtime-library-a-compiler-option-rather-than-a-linker-option – 2012-03-15 19:18:40

+0

CRT与它不是很兼容。最大的问题是全局变量,如errno。获取重新定义为/ MD有效的函数。 – 2012-03-15 19:37:25

回答

1

当您使用/MD构建时,编译器使用一组不同的预定义宏,那么当您使用/MT进行构建时。请参阅documentation并注意_MT,_DLL等宏。

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

这是事实,但如果你有任何系统头,你的预处理源实际上是不同取决于其中/MD/MT等标志你已经使用,并事项非常多的编译阶段。

相关问题