【发布时间】:2014-04-19 16:09:07
【问题描述】:
当您在两个不同的 C 源文件中定义相同的函数(非静态)、编译它们并使用 Microsoft 链接器链接它们时,您会收到一条重复符号错误消息,正如预期的那样。
另一方面,当您定义一个与标准库函数名称匹配的函数时,例如cos(not 定义为 COMDAT)则没有错误;您的定义会默默地覆盖标准库定义。这也是期望的行为,但我试图弄清楚确切的规则是什么。
规则是“在目标文件中定义的符号覆盖在库文件中定义的符号”还是其他?我在 PE 规范中找不到任何提及这一点,但也许我忽略了一些东西。
【问题讨论】:
标签: c windows visual-c++ linker portable-executable